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.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 Compute Engine 發現
  • Zen 發現

閘道器

此模組維護叢集狀態和跨完全叢集重啟的分片資料。以下是此模組的靜態設定:

設定 可能值 描述
gateway.expected_nodes 數值(預設為 0) 預期在叢集中存在的節點數量,用於本地分片的恢復。
gateway.expected_master_nodes 數值(預設為 0) 在開始恢復之前,預期在叢集中存在的 master 節點數量。
gateway.expected_data_nodes 數值(預設為 0) 在開始恢復之前,預期在叢集中存在的 data 節點數量。
gateway.recover_after_time 字串值(預設為 5m) 這是磁碟使用情況檢查之間的間隔。
cluster.routing.allocation.disk.include_relocations 布林值(預設為 true)

這指定了恢復過程將等待啟動的時間,而不管加入叢集的節點數量如何。

gateway.recover_after_nodes
gateway.recover_after_master_nodes
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.pipelining

這啟用或停用 HTTP 管道。

10

http.pipelining.max_events

這限制了在關閉 HTTP 請求之前要排隊的事件數。

索引

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

斷路器

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

Fielddata 快取

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

節點查詢快取

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

索引緩衝區

此緩衝區儲存索引中新建立的文件,並在緩衝區滿時重新整理它們。諸如 indices.memory.index_buffer_size 之類的設定控制為此緩衝區分配的堆量。

分片請求快取

此快取用於儲存每個分片的本地搜尋資料。可以在建立索引時啟用快取,也可以透過傳送 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 60s
indices.ttl.bulk_size 1000

節點

每個節點可以選擇是否為資料節點。您可以透過更改node.data設定來更改此屬性。將值設定為false表示該節點不是資料節點。

廣告
© . All rights reserved.