Elasticsearch由許多模塊組成,這些模塊負責其功能。這些模塊具有兩種類型的設置,如下所示:
靜態(tài)設置?在啟動Elasticsearch之前,需要在config(elasticsearch.yml)文件中配置這些設置。您需要更新集群中的所有關注節(jié)點,以反映這些設置的更改。
動態(tài)設置 ?這些設置可以在實時Elasticsearch上進行設置。
我們將在本章以下各節(jié)中討論Elasticsearch的不同模塊。
集群級設置決定將碎片分配給不同的節(jié)點,并重新分配碎片以重新平衡集群。以下是控制碎片分配的設置。
設置 | 可能的值 | 描述 |
---|---|---|
cluster.routing.allocation.enable | ||
all | 此默認值允許為所有類型的碎片分配碎片。 | |
primaries | 這只允許為主碎片分配碎片。 | |
new_primaries | 這只允許為新索引的主碎片分配碎片。 | |
none | 這不允許任何碎片分配。 | |
cluster.routing.allocation .node_concurrent_recoveries | 數值(默認值為2) | 這限制了并發(fā)碎片恢復的數量。 |
cluster.routing.allocation .node_initial_primaries_recoveries | 數值(默認為4) | 這限制了并行初始主恢復的數量。 |
cluster.routing.allocation .same_shard.host | 布爾值(默認為false) | 這限制了在同一物理節(jié)點中分配同一分片的多個副本。 |
index.recovery.concurrent _streams | 數值(默認為3) | 這控制從對等碎片恢復碎片時每個節(jié)點打開的網絡流的數量。 |
index.recovery.concurrent _small_file_streams | 數值(默認為2) | 這可以控制碎片恢復時大小小于5mb的小文件在每個節(jié)點上打開的流的數量。 |
cluster.routing.rebalance.enable | ||
all | 此默認值允許平衡所有類型的碎片。 | |
primaries | 這只允許主碎片進行碎片平衡。 | |
replicas | 這只允許對副本碎片進行碎片平衡。 | |
none | 這不允許任何形式的碎片平衡。 | |
cluster.routing.allocation .allow_rebalance | ||
always | 此默認值始終允許重新平衡。 | |
indexs_primaries_active | 這允許在分配集群中的所有主碎片時重新平衡。 | |
Indices_all_active | 這允許在分配所有主碎片和副本碎片時重新平衡 | |
cluster.routing.allocation.cluster _concurrent_rebalance | 數值(默認為2) | 這限制了集群中并發(fā)分片平衡的數量。 |
cluster.routing.allocation .balance.shard | 浮點值(默認為0.45f) | 這定義了分配給每個節(jié)點的碎片的權重因子。 |
cluster.routing.allocation .balance.index | 浮點值(默認為0.55f) | 這定義了在特定節(jié)點上分配的每個索引的碎片數的比率。 |
cluster.routing.allocation .balance.threshold | 非負浮點值(默認為1.0f) | 這是應該執(zhí)行的操作的最小優(yōu)化值。 |
設置 | 可能的值 | 描述 |
---|---|---|
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) | 這決定了在計算磁盤使用率時是否考慮當前分配的分片。 |
這個模塊幫助集群發(fā)現(xiàn)并維護集群中所有節(jié)點的狀態(tài)。當從集群中添加或刪除節(jié)點時,集群的狀態(tài)會發(fā)生變化。集群名稱設置用于創(chuàng)建不同集群之間的邏輯差異。有一些模塊可以幫助您使用云供應商提供的API,如下所示-
Azure發(fā)現(xiàn)
EC2發(fā)現(xiàn)
Google計算引擎發(fā)現(xiàn)
禪Zen發(fā)現(xiàn)
該模塊在整個集群重新啟動時維護集群狀態(tài)和分片數據。以下是該模塊的靜態(tài)設置-
設置 | 可能的值 | 描述 |
---|---|---|
gateway.expected_nodes | 數值(默認為0) | 群集中用于恢復本地分片的節(jié)點數。 |
gateway.expected_master_nodes | 數值(默認為0) | 開始恢復之前,預期在群集中的主節(jié)點數。 |
gateway.expected_data_nodes | 數值(默認為0) | 開始恢復之前,群集中預期的數據節(jié)點數。 |
gateway.recover_after_time | 字符串值(默認為5m) | 這是兩次磁盤使用情況檢查之間的間隔。 |
cluster.routing.allocation. disk.include_relocations | 布爾值(默認為true) | 這指定了恢復過程將等待開始的時間,而不管群集中加入的節(jié)點數量如何。 gateway.recover_ after_nodes |
該模塊管理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堆大小。例如,indexs.breaker.total.limit設置,默認為JVM堆的70%。
主要用于在字段上聚合時使用。建議有足夠的內存來分配它??梢允褂胕ndex.fielddata.cache.size設置來控制用于字段數據緩存的內存量。
該內存用于緩存查詢結果。該緩存使用最近最少使用(LRU)驅逐策略。Indices.queries.cahce.size設置控制此緩存的內存大小。
該緩沖區(qū)將新創(chuàng)建的文檔存儲在索引中,并在緩沖區(qū)已滿時刷新它們。像indexs.memory.index_buffer_size這樣的設置控制為此緩沖區(qū)分配的堆數量。
該緩存用于存儲每個分片的本地搜索數據。可以在創(chuàng)建索引期間啟用緩存,也可以通過發(fā)送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)間隔定義了文檔的時間,之后該文檔將被刪除。以下是用于控制此過程的動態(tài)設置-
設置 | 默認值 |
---|---|
indices.ttl.interval | 60s |
indices.ttl.bulk_size | 1000 |
每個節(jié)點都可以選擇是否為數據節(jié)點。可以通過更改 node.data 設置來更改此屬性。將該值設置為 false 將定義該節(jié)點不是數據節(jié)點。