Elasticsearch模組


Elasticsearch由多個模組組成,這些模組負責其功能。 這些模組有以下兩種型別的設定 -

  • 靜態設定 - 在啟動Elasticsearch之前,需要在組態檔案(elasticsearch.yml)中組態這些設定。需要更新叢集中的所有關注節點以反映這些設定的更改。

  • 動態設定 - 這些設定可以在實時Elasticsearch上設定。

我們將在本章的以下部分討論Elasticsearch中的每個模組。

叢集級路由和碎片分配

叢集級別設定決定將碎片分配給不同節點,以及將碎片重新分配給平衡叢集。這些是以下設定來控制碎片分配 -

叢集級碎片分配-

  • cluster.routing.allocation.enable 可能的值及說明 -

    • all - 此預設值允許為所有種類的碎片分配碎片。
    • primaries - 這允許只為主碎片分配碎片。
    • new_primaries- 這允許只為新索引的主碎片分配碎片。
    • none- 這不允許任何碎片分配。
  • cluster.routing.allocation.node_concurrent_recoveries - 一個數位值(預設為2 ),它限制了並行碎片恢復的數量。

  • cluster.routing.allocation.node_initial_primaries_recoveries - 一個數位值(預設為 4 ),它限制了並行初始初級恢復的數量。

  • cluster.routing.allocation.same_shard.host - 布林值(預設為false), 它限制了同一物理節點中同一碎片的多個副本的分配。

  • indices.recovery.concurrent _streams - 一個數位值(預設為3 ),它控制在從對等體碎片恢復碎片時每個節點的開放網路流的數量。

  • indices.recovery.concurrent_small_file_streams - 一個數位值(預設為2 ),這控制了在碎片恢復時對於小於5mb的小檔案的每個節點的開放流的數量。

  • cluster.routing.rebalance.enable可能的值及說明 -

    • all - 此預設值允許平衡所有種類的碎片。
    • primaries- 這允許只對主碎片進行碎片平衡。
    • replicas - 這允許只對副本碎片進行碎片平衡。
    • none - 這不允許任何型別的碎片平衡。
  • cluster.routing.allocation.allow_rebalance 可能的值及說明 -

    • always - 此預設值始終允許重新平衡。
    • indices_primaries _active - 這允許在分配叢集中的所有主碎片時進行重新平衡。
    • Indices_all_active - 這允許在分配所有主碎片和副本碎片時重新平衡。
  • cluster.routing.allocation.cluster _concurrent_rebalance - 一個數位值(預設為2 ), 這限制了叢集中的並行碎片平衡數。

  • cluster.routing.allocation.balance.shard - 一個浮點數值(預設為0.45f ),這定義了在每個節點上分配的碎片的權重因子。

  • cluster.routing.allocation.balance.index - 一個浮點數值(預設為0.55f ),這定義了在特定節點上分配的每個索引的碎片數量的比率。

  • cluster.routing.allocation.balance.threshold - 一個浮點數值(預設為1.0f ),這定義了在特定節點上分配的每個索引的碎片數量的比率。

  • cluster.routing.allocation .balance.threshold - 非負浮點值(預設為1.0f)這是應該執行的操作的最小優化值。

基於磁碟的碎片分配

設定 可能的值 描述
cluster.routing.allocation.disk.threshold_enabled 布林值(預設為true) 這啟用和禁用磁碟分配決策程式。
cluster.routing.allocation.disk.watermark.low 字串值(預設為85%) 這表示磁碟的最大使用; 此後,無法將其他碎片分配給該磁碟。
cluster.routing.allocation.disk.watermark.high 字串值(預設為90%) 這表示分配時的最大使用量; 如果在分配時達到這一點,Elasticsearch將把該碎片分配給另一個磁碟。
cluster.info.update.interval 字串值(預設30s) 這是磁碟用法,檢查兩個時間之間的間隔。
cluster.routing.allocation.disk.include_relocations 布林值(預設為true) 這決定在計算磁碟使用率時是否考慮當前分配的分片。

發現

此模組幫助叢集發現和維護其中的所有節點的狀態。在從叢集新增或刪除節點時叢集的狀態發生更改。叢集名稱設定用於在不同叢集之間建立邏輯差異。有一些模組,可以幫助您使用雲供應商提供的API -

  • Azure發現
  • EC2發現
  • Google計算引擎發現
  • Zen發現

閘道器

此模組在整個群集重新啟動時維護群集狀態和分片資料。以下是此模組的靜態設定 -

設定 可能的值 描述
gateway.expected_nodes 數值(預設為0) 預期在群集中用於恢復本地碎片的節點數。
gateway.expected_master_nodes 數值(預設為0) 在開始恢復之前預期在群集中的主節點數。
gateway.expected_data_nodes 數值(預設為0) 開始恢復之前群集中預期的資料節點數。
gateway.recover_after_time 字串值(預設為5m) 這用於指定恢復進程將等待啟動的時間,而不考慮在叢集中加入的節點數。1. gateway.recover_after_nodes 2. gateway.recover_after_master_nodes 3. gateway.recover_after_data_nodes

HTTP

此模組管理HTTP用戶端和Elasticsearch API之間的通訊。可以通過將http.enabled的值更改為false來禁用此模組。 以下是控制此模組的設定(在elasticsearch.yml中組態)

編號 設定 描述
1 http.port 存取Elasticsearch的埠,範圍為9200-9300
2 http.publish_port 此埠用於HTTP用戶端,並且在防火牆的情況下也很有用。
3 http.bind_host http服務的主機地址。
4 http.publish_host http用戶端的主機地址。
5 http.max_content_length 這是http請求中內容的最大值。其預設值為100mb
6 http.max_initial_line_length 這是URL的最大值,其預設值為4kb
7 http.max_header_size 這是最大http報頭大小,其預設值為8kb
8 http.compression 這啟用或禁用對壓縮的支援,其預設值為false
9 http.pipelinig 這將啟用或禁用HTTP通道線。
10 http.pipelining.max_events 這會限制在關閉HTTP請求之前排隊的事件數。

索引

此模組維護對每個索引全域性設定的設定。以下設定主要與記憶體使用有關 -

斷路器

這用於防止操作引起OutOfMemroyError。 該設定主要限制JVM堆大小。 例如,indices.breaker.total.limit設定,JVM堆的預設為70%

Fielddata快取

這主要用於在欄位上聚合時。建議分配它足夠的記憶體。 可以使用indices.fielddata.cache.size設定控制用於欄位資料快取記憶體的記憶體量。

節點查詢快取

此記憶體用於快取查詢結果。此快取使用最近最少使用(LRU)逐出策略。 Indices.queries.cahce.size設定控制此快取的記憶體大小。

索引緩衝區

此緩衝區將新建立的文件儲存在索引中,並在緩衝區已滿時將其重新整理。設定為indices.memory.index_buffer_size控制為此緩衝區分配的堆的大小。

Shard請求快取

此快取用於儲存每個分片的本地搜尋資料。快取可以在建立索引期間啟用,也可以通過傳送URL引數來禁用。

Disable cache - ?request_cache = true
Enable cache "index.requests.cache.enable": true

索引恢復

它在恢復過程中控制資源。以下是一些設定 -

設定 預設值
indices.recovery.concurrent_streams 3
indices.recovery.concurrent_small_file_streams 2
indices.recovery.file_chunk_size 512kb
indices.recovery.translog_ops 1000
indices.recovery.translog_size 512kb
indices.recovery.compress true
indices.recovery.max_bytes_per_sec 40mb

TTL間隔

生存時間(TTL)間隔定義文件的時間,之後文件將被刪除。 以下是控制此過程的動態設定 -

設定 預設值
indices.ttl.interval 60
indices.ttl.bulk_size 1000

節點

每個節點有一個選項是否是資料節點。可以通過更改node.data設定更改此屬性。將值設定為false將定義該節點不是資料節點。