Elasticsearch由許多模塊組成,這些模塊負(fù)責(zé)其功能。這些模塊具有兩種類型的設(shè)置,如下所示:
靜態(tài)設(shè)置?在啟動(dòng)Elasticsearch之前,需要在config(elasticsearch.yml)文件中配置這些設(shè)置。您需要更新集群中的所有關(guān)注節(jié)點(diǎn),以反映這些設(shè)置的更改。
動(dòng)態(tài)設(shè)置 ?這些設(shè)置可以在實(shí)時(shí)Elasticsearch上進(jìn)行設(shè)置。
我們將在本章以下各節(jié)中討論Elasticsearch的不同模塊。
集群級(jí)設(shè)置決定將碎片分配給不同的節(jié)點(diǎn),并重新分配碎片以重新平衡集群。以下是控制碎片分配的設(shè)置。
設(shè)置 | 可能的值 | 描述 |
---|---|---|
cluster.routing.allocation.enable | ||
all | 此默認(rèn)值允許為所有類型的碎片分配碎片。 | |
primaries | 這只允許為主碎片分配碎片。 | |
new_primaries | 這只允許為新索引的主碎片分配碎片。 | |
none | 這不允許任何碎片分配。 | |
cluster.routing.allocation .node_concurrent_recoveries | 數(shù)值(默認(rèn)值為2) | 這限制了并發(fā)碎片恢復(fù)的數(shù)量。 |
cluster.routing.allocation .node_initial_primaries_recoveries | 數(shù)值(默認(rèn)為4) | 這限制了并行初始主恢復(fù)的數(shù)量。 |
cluster.routing.allocation .same_shard.host | 布爾值(默認(rèn)為false) | 這限制了在同一物理節(jié)點(diǎn)中分配同一分片的多個(gè)副本。 |
index.recovery.concurrent _streams | 數(shù)值(默認(rèn)為3) | 這控制從對(duì)等碎片恢復(fù)碎片時(shí)每個(gè)節(jié)點(diǎn)打開的網(wǎng)絡(luò)流的數(shù)量。 |
index.recovery.concurrent _small_file_streams | 數(shù)值(默認(rèn)為2) | 這可以控制碎片恢復(fù)時(shí)大小小于5mb的小文件在每個(gè)節(jié)點(diǎn)上打開的流的數(shù)量。 |
cluster.routing.rebalance.enable | ||
all | 此默認(rèn)值允許平衡所有類型的碎片。 | |
primaries | 這只允許主碎片進(jìn)行碎片平衡。 | |
replicas | 這只允許對(duì)副本碎片進(jìn)行碎片平衡。 | |
none | 這不允許任何形式的碎片平衡。 | |
cluster.routing.allocation .allow_rebalance | ||
always | 此默認(rèn)值始終允許重新平衡。 | |
indexs_primaries_active | 這允許在分配集群中的所有主碎片時(shí)重新平衡。 | |
Indices_all_active | 這允許在分配所有主碎片和副本碎片時(shí)重新平衡 | |
cluster.routing.allocation.cluster _concurrent_rebalance | 數(shù)值(默認(rèn)為2) | 這限制了集群中并發(fā)分片平衡的數(shù)量。 |
cluster.routing.allocation .balance.shard | 浮點(diǎn)值(默認(rèn)為0.45f) | 這定義了分配給每個(gè)節(jié)點(diǎn)的碎片的權(quán)重因子。 |
cluster.routing.allocation .balance.index | 浮點(diǎn)值(默認(rèn)為0.55f) | 這定義了在特定節(jié)點(diǎn)上分配的每個(gè)索引的碎片數(shù)的比率。 |
cluster.routing.allocation .balance.threshold | 非負(fù)浮點(diǎn)值(默認(rèn)為1.0f) | 這是應(yīng)該執(zhí)行的操作的最小優(yōu)化值。 |
設(shè)置 | 可能的值 | 描述 |
---|---|---|
cluster.routing.allocation.disk.threshold_enabled | 布爾值(默認(rèn)為true) | 這將啟用和禁用磁盤分配決策程序。 |
cluster.routing.allocation.disk.watermark.low | 字符串值(默認(rèn)為85%) | 這表示磁盤的最大使用率;此后,將無法將其他分片分配給該磁盤。 |
cluster.routing.allocation.disk.watermark.high | 字符串值(默認(rèn)為90%) | 這表示分配時(shí)的最大使用量;如果在分配時(shí)達(dá)到了這一點(diǎn),那么Elasticsearch會(huì)將那個(gè)分片分配給另一個(gè)磁盤。 |
cluster.info.update.interval | 字符串值(默認(rèn)30s) | 這是兩次磁盤使用情況檢查之間的間隔。 |
cluster.routing.allocation.disk.include_relocations | 布爾值(默認(rèn)情況下為 true) | 這決定了在計(jì)算磁盤使用率時(shí)是否考慮當(dāng)前分配的分片。 |
這個(gè)模塊幫助集群發(fā)現(xiàn)并維護(hù)集群中所有節(jié)點(diǎn)的狀態(tài)。當(dāng)從集群中添加或刪除節(jié)點(diǎn)時(shí),集群的狀態(tài)會(huì)發(fā)生變化。集群名稱設(shè)置用于創(chuàng)建不同集群之間的邏輯差異。有一些模塊可以幫助您使用云供應(yīng)商提供的API,如下所示-
Azure發(fā)現(xiàn)
EC2發(fā)現(xiàn)
Google計(jì)算引擎發(fā)現(xiàn)
禪Zen發(fā)現(xiàn)
該模塊在整個(gè)集群重新啟動(dòng)時(shí)維護(hù)集群狀態(tài)和分片數(shù)據(jù)。以下是該模塊的靜態(tài)設(shè)置-
設(shè)置 | 可能的值 | 描述 |
---|---|---|
gateway.expected_nodes | 數(shù)值(默認(rèn)為0) | 群集中用于恢復(fù)本地分片的節(jié)點(diǎn)數(shù)。 |
gateway.expected_master_nodes | 數(shù)值(默認(rèn)為0) | 開始恢復(fù)之前,預(yù)期在群集中的主節(jié)點(diǎn)數(shù)。 |
gateway.expected_data_nodes | 數(shù)值(默認(rèn)為0) | 開始恢復(fù)之前,群集中預(yù)期的數(shù)據(jù)節(jié)點(diǎn)數(shù)。 |
gateway.recover_after_time | 字符串值(默認(rèn)為5m) | 這是兩次磁盤使用情況檢查之間的間隔。 |
cluster.routing.allocation. disk.include_relocations | 布爾值(默認(rèn)為true) | 這指定了恢復(fù)過程將等待開始的時(shí)間,而不管群集中加入的節(jié)點(diǎn)數(shù)量如何。 gateway.recover_ after_nodes |
該模塊管理HTTP客戶端和Elasticsearch API之間的通信。可以通過將值更改http.enabled為false來禁用此模塊。
以下是用于控制此模塊的設(shè)置(在elasticsearch.yml中配置)-
序號(hào) | 設(shè)定與說明 |
---|---|
1 | http.port 這是訪問Elasticsearch的端口,范圍為9200-9300。 |
2 | http.publish_port 此端口用于http客戶端,在防火墻的情況下也很有用。 |
3 | http.bind_host 這是 http 服務(wù)的主機(jī)地址。 |
4 | http.publish_host 這是http客戶機(jī)的主機(jī)地址。 |
5 | http.max_content_length 這是http請(qǐng)求中內(nèi)容的最大大小。它的默認(rèn)值是100mb。 |
6 | http.max_initial_line_length 這是URL的最大大小,其默認(rèn)值為4kb。 |
7 | http.max_header_size 這是 http 頭的最大大小,默認(rèn)值為8kb。 |
8 | http.compression 這將啟用或禁用對(duì)壓縮的支持,其默認(rèn)值為false。 |
9 | http.pipelinig 這將啟用或禁用 HTTP 管道。 |
10 | http.pipelining.max_events 這限制了在關(guān)閉HTTP請(qǐng)求之前要排隊(duì)的事件數(shù)。 |
此模塊維護(hù)為每個(gè)索引全局設(shè)置的設(shè)置。以下設(shè)置主要與內(nèi)存使用有關(guān)-
這用于防止操作引起OutOfMemroyError。該設(shè)置主要限制JVM堆大小。例如,indexs.breaker.total.limit設(shè)置,默認(rèn)為JVM堆的70%。
主要用于在字段上聚合時(shí)使用。建議有足夠的內(nèi)存來分配它??梢允褂胕ndex.fielddata.cache.size設(shè)置來控制用于字段數(shù)據(jù)緩存的內(nèi)存量。
該內(nèi)存用于緩存查詢結(jié)果。該緩存使用最近最少使用(LRU)驅(qū)逐策略。Indices.queries.cahce.size設(shè)置控制此緩存的內(nèi)存大小。
該緩沖區(qū)將新創(chuàng)建的文檔存儲(chǔ)在索引中,并在緩沖區(qū)已滿時(shí)刷新它們。像indexs.memory.index_buffer_size這樣的設(shè)置控制為此緩沖區(qū)分配的堆數(shù)量。
該緩存用于存儲(chǔ)每個(gè)分片的本地搜索數(shù)據(jù)。可以在創(chuàng)建索引期間啟用緩存,也可以通過發(fā)送URL參數(shù)來禁用緩存。
Disable cache - ?request_cache = true Enable cache "index.requests.cache.enable": true
它在恢復(fù)過程中控制資源。以下是設(shè)置-
設(shè)置 | 默認(rèn)值 |
---|---|
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 |
生存時(shí)間(TTL)間隔定義了文檔的時(shí)間,之后該文檔將被刪除。以下是用于控制此過程的動(dòng)態(tài)設(shè)置-
設(shè)置 | 默認(rèn)值 |
---|---|
indices.ttl.interval | 60s |
indices.ttl.bulk_size | 1000 |
每個(gè)節(jié)點(diǎn)都可以選擇是否為數(shù)據(jù)節(jié)點(diǎn)。可以通過更改 node.data 設(shè)置來更改此屬性。將該值設(shè)置為 false 將定義該節(jié)點(diǎn)不是數(shù)據(jù)節(jié)點(diǎn)。