鍍金池/ 教程/ Java/ Elasticsearch模塊
Elasticsearch搜索API
Elasticsearch教程
Elasticsearch填充
Elasticsearch測試
Elasticsearch分析
Elasticsearch映射
Elasticsearch入門教程
Elasticsearch版本之間遷移
Elasticsearch集群API
Elasticsearch模塊
Elasticsearch環(huán)境安裝配置
Elasticsearch聚合
Elasticsearch查詢DSL
Elasticsearch索引API
Elasticsearch API約定
Elasticsearch文檔API

Elasticsearch模塊

Elasticsearch由多個模塊組成,這些模塊負責其功能。 這些模塊有以下兩種類型的設(shè)置 -

  • 靜態(tài)設(shè)置 - 在啟動Elasticsearch之前,需要在配置文件(elasticsearch.yml)中配置這些設(shè)置。需要更新集群中的所有關(guān)注節(jié)點以反映這些設(shè)置的更改。

  • 動態(tài)設(shè)置 - 這些設(shè)置可以在實時Elasticsearch上設(shè)置。

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

集群級路由和碎片分配

集群級別設(shè)置決定將碎片分配給不同節(jié)點,以及將碎片重新分配給平衡集群。這些是以下設(shè)置來控制碎片分配 -

集群級碎片分配-

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

    • all - 此默認值允許為所有種類的碎片分配碎片。
    • primaries - 這允許只為主碎片分配碎片。
    • new_primaries- 這允許只為新索引的主碎片分配碎片。
    • none- 這不允許任何碎片分配。
  • cluster.routing.allocation.node_concurrent_recoveries - 一個數(shù)字值(默認為2 ),它限制了并發(fā)碎片恢復(fù)的數(shù)量。

  • cluster.routing.allocation.node_initial_primaries_recoveries - 一個數(shù)字值(默認為 4 ),它限制了并行初始初級恢復(fù)的數(shù)量。

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

  • indices.recovery.concurrent _streams - 一個數(shù)字值(默認為3 ),它控制在從對等體碎片恢復(fù)碎片時每個節(jié)點的開放網(wǎng)絡(luò)流的數(shù)量。

  • indices.recovery.concurrent_small_file_streams - 一個數(shù)字值(默認為2 ),這控制了在碎片恢復(fù)時對于小于5mb的小文件的每個節(jié)點的開放流的數(shù)量。

  • 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 - 一個數(shù)字值(默認為2 ), 這限制了集群中的并發(fā)碎片平衡數(shù)。

  • cluster.routing.allocation.balance.shard - 一個浮點數(shù)值(默認為0.45f ),這定義了在每個節(jié)點上分配的碎片的權(quán)重因子。

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

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

  • cluster.routing.allocation .balance.threshold - 非負浮點值(默認為1.0f)這是應(yīng)該執(zhí)行的操作的最小優(yōu)化值。

基于磁盤的碎片分配

設(shè)置 可能的值 描述
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)

此模塊幫助集群發(fā)現(xiàn)和維護其中的所有節(jié)點的狀態(tài)。在從集群添加或刪除節(jié)點時集群的狀態(tài)發(fā)生更改。集群名稱設(shè)置用于在不同集群之間創(chuàng)建邏輯差異。有一些模塊,可以幫助您使用云供應(yīng)商提供的API -

  • Azure發(fā)現(xiàn)
  • EC2發(fā)現(xiàn)
  • Google計算引擎發(fā)現(xiàn)
  • Zen發(fā)現(xiàn)

網(wǎng)關(guān)

此模塊在整個群集重新啟動時維護群集狀態(tài)和分片數(shù)據(jù)。以下是此模塊的靜態(tài)設(shè)置 -

設(shè)置 可能的值 描述
gateway.expected_nodes 數(shù)值(默認為0) 預(yù)期在群集中用于恢復(fù)本地碎片的節(jié)點數(shù)。
gateway.expected_master_nodes 數(shù)值(默認為0) 在開始恢復(fù)之前預(yù)期在群集中的主節(jié)點數(shù)。
gateway.expected_data_nodes 數(shù)值(默認為0) 開始恢復(fù)之前群集中預(yù)期的數(shù)據(jù)節(jié)點數(shù)。
gateway.recover_after_time 字符串值(默認為5m) 這用于指定恢復(fù)進程將等待啟動的時間,而不考慮在集群中加入的節(jié)點數(shù)。1. gateway.recover_after_nodes 2. gateway.recover_after_master_nodes 3. gateway.recover_after_data_nodes

HTTP

此模塊管理HTTP客戶端和Elasticsearch API之間的通信??梢酝ㄟ^將http.enabled的值更改為false來禁用此模塊。 以下是控制此模塊的設(shè)置(在elasticsearch.yml中配置)

編號 設(shè)置 描述
1 http.port 訪問Elasticsearch的端口,范圍為9200-9300。
2 http.publish_port 此端口用于HTTP客戶端,并且在防火墻的情況下也很有用。
3 http.bind_host http服務(wù)的主機地址。
4 http.publish_host http客戶端的主機地址。
5 http.max_content_length 這是http請求中內(nèi)容的最大值。其默認值為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 這會限制在關(guān)閉HTTP請求之前排隊的事件數(shù)。

索引

此模塊維護對每個索引全局設(shè)置的設(shè)置。以下設(shè)置主要與內(nèi)存使用有關(guān) -

斷路器

這用于防止操作引起OutOfMemroyError。 該設(shè)置主要限制JVM堆大小。 例如,indices.breaker.total.limit設(shè)置,JVM堆的默認為70%

Fielddata緩存

這主要用于在字段上聚合時。建議分配它足夠的內(nèi)存。 可以使用indices.fielddata.cache.size設(shè)置控制用于字段數(shù)據(jù)高速緩存的內(nèi)存量。

節(jié)點查詢緩存

此內(nèi)存用于緩存查詢結(jié)果。此緩存使用最近最少使用(LRU)逐出策略。 Indices.queries.cahce.size設(shè)置控制此緩存的內(nèi)存大小。

索引緩沖區(qū)

此緩沖區(qū)將新創(chuàng)建的文檔存儲在索引中,并在緩沖區(qū)已滿時將其刷新。設(shè)置為indices.memory.index_buffer_size控制為此緩沖區(qū)分配的堆的大小。

Shard請求緩存

此緩存用于存儲每個分片的本地搜索數(shù)據(jù)。緩存可以在創(chuàng)建索引期間啟用,也可以通過發(fā)送URL參數(shù)來禁用。

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

索引恢復(fù)

它在恢復(fù)過程中控制資源。以下是一些設(shè)置 -

設(shè)置 默認值
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)間隔定義文檔的時間,之后文檔將被刪除。 以下是控制此過程的動態(tài)設(shè)置 -

設(shè)置 默認值
indices.ttl.interval 60
indices.ttl.bulk_size 1000

節(jié)點

每個節(jié)點有一個選項是否是數(shù)據(jù)節(jié)點。可以通過更改node.data設(shè)置更改此屬性。將值設(shè)置為false將定義該節(jié)點不是數(shù)據(jù)節(jié)點。