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
將定義該節點不是數據節點。