- Elasticsearch 教程
- Elasticsearch - 首頁
- Elasticsearch - 基本概念
- Elasticsearch - 安裝
- Elasticsearch - 資料填充
- 版本遷移
- Elasticsearch - API 約定
- Elasticsearch - 文件 API
- Elasticsearch - 搜尋 API
- Elasticsearch - 聚合
- Elasticsearch - 索引 API
- Elasticsearch - CAT API
- Elasticsearch - 叢集 API
- Elasticsearch - 查詢 DSL
- Elasticsearch - 對映
- Elasticsearch - 分析
- Elasticsearch 模組
- Elasticsearch - 索引模組
- Elasticsearch - Ingest 節點
- Elasticsearch - 管理索引生命週期
- Elasticsearch - SQL 訪問
- Elasticsearch - 監控
- Elasticsearch - 資料彙總
- Elasticsearch - 凍結索引
- Elasticsearch - 測試
- Elasticsearch - Kibana 儀表盤
- Elasticsearch - 按欄位過濾
- Elasticsearch - 資料表
- Elasticsearch - 區域地圖
- Elasticsearch - 餅圖
- Elasticsearch - 面積圖和條形圖
- Elasticsearch - 時間序列
- Elasticsearch - 詞雲
- Elasticsearch - 熱力圖
- Elasticsearch - Canvas
- Elasticsearch - 日誌 UI
- Elasticsearch 有用資源
- Elasticsearch - 快速指南
- Elasticsearch - 有用資源
- Elasticsearch - 討論
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 |
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表示該節點不是資料節點。