Elasticsearch創建索引(index)及一個文檔(document)


Index

我們可以看到在Kibana右邊的窗口中有下面的輸出:

在上面,我們可以看出來我們已經成功地創建了一個叫做twitter的index。通過這樣的方法,我們可以自動創建一個index。如果大家不喜歡自動創建一個index,我們可以修改如下的一個設置:

PUT _cluster/settings
{
    "persistent": {
        "action.auto_create_index": "false" 
    }
}

詳細設置請參閱鏈接。如果你你想禁止自動創建索引,您必須配置action.auto_create_index以允許這些創建以下索引的組件:

PUT _cluster/settings
{
  "persistent": {
    "action.auto_create_index": ".monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*"
  }
}

如果使用Logstash或Beats,則應在上面的列表中添加其他索引名稱。我們也可以在elasticsearch.yml里進行配置。

action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*

 Refresh

通常對一個通過上面方法寫入到Elasticsearch的文檔,在默認的情況下並不馬上可以進行搜索。這是因為在Elasticsearch的設計中,有一個叫做refresh的操作。它可以使更改可見以進行搜索的操作。通常會有一個refresh timer來定時完成這個操作。這個周期為1秒。這也是我們通常所說的Elasticsearch可以實現秒級的搜索。當然這個timer的周期也可以在索引的設置中進行配置。如果我們想讓我們的結果馬上可以對搜索可見,我們可以用如下的方法:

PUT twitter/_doc/1?refresh=true
{
  "user": "GB",
  "uid": 1,
  "city": "Beijing",
  "province": "Beijing",
  "country": "China"
}

上面的方式可以強制使Elasticsearch進行refresh的操作,當然這個是有代價的。頻繁的進行這種操作,可以使我們的Elasticsearch變得非常慢。另外一種方式是通過設置refresh=wait_for。這樣相當於一個同步的操作,它等待下一個refresh周期發生完后,才返回。這樣可以確保我們在調用上面的接口后,馬上可以搜索到我們剛才錄入的文檔:

PUT twitter/_doc/1?refresh=wait_for
{
  "user": "GB",
  "uid": 1,
  "city": "Beijing",
  "province": "Beijing",
  "country": "China"
}

 Open/close Index

Elasticsearch支持索引的在線/離線模式。 使用脫機模式時,在群集上幾乎沒有任何開銷地維護數據。 關閉索引后,將阻止讀/寫操作。 當您希望索引重新聯機時,只需打開它即可。 但是,關閉索引會占用大量磁盤空間。 您可以通過將cluster.indices.close.enable的默認值從true更改為false來禁用關閉索引功能,以避免發生意外。

 一旦twitter索引被關閉了,那么我們再訪問時會出現如下的錯誤:

 我們可以通過_open接口來重新打開這個index:

Freeze/unfreeze Index

凍結索引(freeze index)在群集上幾乎沒有開銷(除了將其元數據保留在內存中),並且是只讀的。 只讀索引被阻止進行寫操作,例如docs-index或force merge。 請參閱凍結索引取消凍結索引
凍結索引受到限制,以限制每個節點的內存消耗。 每個節點的並發加載的凍結索引數受search_throttled線程池中的線程數限制,默認情況下為1。 默認情況下,即使已明確命名凍結索引,也不會針對凍結索引執行搜索請求。 這是為了防止由於誤將凍結的索引作為目標而導致的意外減速。 如果要包含凍結索引做搜索,必須使用查詢參數ignore_throttled = false來執行搜索請求。
我們可以使用如下的命令來對twitter索引來凍結:

POST twitter/_freeze

在執行上面的命令后,我們再對twitter進行搜索:

 我們搜索不到任何的結果。按照我們上面所說的,我們必須加上ignore_throttled=false參數來進行搜索:

 顯然對於一個frozen的索引來說,我們是可以對它進行搜索的。我們可以通過如下的命令來對這個已經凍結的索引來進行解凍:

POST twitter/_unfreeze

一旦我們的索引被成功解凍,那么它就可以像我們正常的索引來進行操作了,而不用添加參數 ignore_throttled=false 來進行訪問。

轉載至https://blog.csdn.net/UbuntuTouch/article/details/99481016


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM