版本:7.5
這裡為什麼叫『表的屬性設定』,純個人偏好,覺得好理解,原因:
ES >= 7.0,type 預設 _doc 也只能是 _doc,那麼一個 index 就相當於資料庫的一張表,在 settings 裡面設定的引數是針對整個表的,並非某一個欄位,所以叫它表的屬性設定。
表的屬性設定按是否可更改可分為:
-
(static) 靜態
- 建立後不能更改,它們只能在建立索引時或在關閉的索引上設定。
-
(dynamic) 動態
- 建立後,可更改,可以使用 update-index-settings API 動態的在活動索引上更改它們。
WARNING:
更改關閉索引上的靜態或動態索引設定可能導致錯誤的設定,如果不刪除和重新建立索引,就無法糾正這些錯誤。
靜態屬性設定(static index settings)
下面是與任何特定索引模組無關的所有靜態索引設定的列表
屬性名/引數名 | 中文名 | 值型別 | 預設值 | 說明 |
---|---|---|---|---|
index.number_of_shards | 分片數量 | int | 1 | 分片數量,預設 1,些設定只能在建立時設定。它不能在封閉(關閉)索引上更改。每個索引分片數量限制在 1024 個。這個限制是一個安全限制,用於防止由於資源分配而意外建立可能破壞叢集穩定的索引,可以透過 export ES_JAVA_OPTS="-Des.index.max_number_of_shards=128" 來修改這個限制 |
index.shard.check_on_startup | 是否檢查分片 | bool、checksum | false | 分片在開啟之前是否檢查分片是否損壞,當檢查到損壞時,它將阻止分片被開啟,可選值: false (預設)開啟碎片時不檢查是否損壞 checksum 只檢查物理損壞 true 檢查物理和邏輯損壞,相對比較耗CPU與記憶體。專家。在大型索引中,檢查碎片可能會花費大量時間,不建議開啟。 |
index.codec | 資料儲存的壓縮演算法 | string | LZ4 | 資料儲存的壓縮演算法,預設值為 LZ4,可選擇值 best_compression ,比 LZ4 可以獲得更好的壓縮比(即佔據較小的磁碟空間,但儲存效能比 LZ4 低)。 |
index.routing_partition_size | 路由分割槽數 | int | 1 | 預設 1,只能在建立時設定。這個值必須小於索引,除非 index.number_of_shards 的值也是 1,其路由演算法為:(hash(_routing) + hash(_id) % index.routing_parttion_size ) % number_of_shards。如果該值不設定,則路由演算法為 hash(_routing) % number_of_shardings,_routing 預設值為 _id。更多 詳情 |
index.load_fixed_bitset_filters_eagerly | bool | true | 指示快取的篩選器是否為巢狀查詢預載入。(bool),預設值:true。最重要的一點,過濾器所處理的查詢部分不需要計算文件得分。在1.4版本以後,執行巢狀查詢時所使用的 bitsets 預設提前載入就好了。這樣做可以使查詢更快但更耗費記憶體。可以透過 index.load_fixed_bitset_filters_eagerl 配置項為 false 來禁用提前載入 |
動態屬性設定(Dynamic index settings)
下面是所有動態索引設定的列表,不與任何特定的索引模組相關聯:
屬性名/引數名 | 中文名 | 值型別 | 預設值 | 說明 |
---|---|---|---|---|
index.number_of_replicas | 副本 | int | 1 | 每個分片的副本數量,預設 1,推薦 3-5 |
index.auto_expand_replicas | 副本是否自動擴充套件 | bool、string | false | 副本是否自動擴充套件,設定為以破折號分隔的下界和上界(例如0-5),或將all用於上界(例如0-all)。預設為 false (即禁用) 。注意:自動擴充套件的副本數量沒有考慮任何其他分配規則,比如分片分配感知、過濾或每個節點的分片總數,如果適用的規則阻止分配所有副本,則可能導致叢集健康狀態變為黃色。 |
index.search.idle.after | string | 30s (30 秒) | 設定分片多久沒有接收過請求,就會被判定為空閒的時間,預設為30秒。 | |
index.refresh_interval | 重新整理頻率 | string | 1s (1秒) | 執行重新整理操作的頻率,該操作使索引的最近更改對搜尋可見, 預設為1秒, 可以設定為-1表示禁用重新整理。 如果顯示不設定該值,那些在至少${index.search.idle.after}秒之前沒有收到過搜尋請求的分片,將不會收到後臺的重新整理請求,一直要等這些分片收到搜尋才會收到後臺的重新整理請求,如果當前搜尋涉及到操作空閒狀態的分片時,重新整理操作會被掛起直到下一次後臺的重新整理操作(1秒之內),此行為旨在在未執行搜尋時自動最佳化預設情況下的批次索引。如果不希望執行此預設邏輯,應當顯示的將重新整理時間間隔設定為1秒。 |
index.max_result_window | int | 10000 | 控制分頁搜尋總記錄數,from + size 的大小不能超過該值,預設為10000。防止佔用過高的記憶體 | |
index.max_inner_result_window | int | 100 | 從from+ size的最大值,用於控制top aggregations(頂部聚合),預設為100。內部命中和頂部命中聚合佔用堆記憶體,並且時間與 from + size 成正比,防止佔用過高的記憶體。 | |
index.max_rescore_window | int | 10000 | 設定索引的 rescore 請求的 window_size 的最大值, 預設為與 index.max_result_window 的值相同,預設值為 10000,防止佔用過高的記憶體。 | |
index.max_docvalue_fields_search | int | 100 | 查詢中允許的最多 docvalue_fields 數量,預設為 100。doc_value 欄位的查詢成本很高,因為它們可能會導致對每個欄位和每個文件執行搜尋。 | |
index.max_script_fields | int | 32 | 查詢中允許的最多 script_fields 的數量, 預設為32。 | |
index.max_ngram_diff | int | 1 | NGramTokenizer 和 NGramTokenFilter 的 min_gram 和 max_gram 之間允許的最大差異值,預設為 1。 | |
index.max_shingle_diff | int | 3 | 對於 ShingleTokenFilter, max_shingle_size 和 min_shingle_size 之間允許的最大差異。預設為 3。 | |
index.blocks.read_only | bool | 設定為 true 使索引和索引後設資料只讀,設定為 false 允許寫和後設資料更改。 | ||
index.blocks.read_only_allow_delete | bool | 控制索引及其後設資料在只讀狀態下,是否允許執行刪除,設定 true 表示允許刪除,false 不允許 | ||
index.blocks.read | bool | 是否禁用對索引資料的讀操作 | ||
index.blocks.write | bool | 是否禁用對索引的資料寫操作。設定為 true 可禁用針對索引的資料寫操作。與 read_only 不同,此設定不影響後設資料。例如,可以用寫塊(blocks.write)關閉索引,但不能用 read_only 塊關閉索引。 | ||
index.blocks.metadata | bool | 是否禁用對索引後設資料的讀寫。設定為true可禁用索引後設資料的讀寫。 | ||
index.max_refresh_listeners | 索引的每個分片上當重新整理索引時最大的可用監聽器數量。這些偵聽器用於實現 refresh=wait_for。 | |||
index.analyze.max_token_count | int | 10000 | 使用_analyze API可以生成的最大詞項數, 預設為10000 | |
index.highlight.max_analyzed_offset | int | 10000 | highlight(高亮) 請求可被分析的最大字元數,此設定僅在 highlight 請求針對沒有偏移量或 term vector 的索引文字時才會生效, 預設為 1000000。 | |
index.max_terms_count | int | 65536 | 可在 term 查詢中使用的最大 term 數,預設值為 65536。 | |
index.max_regex_length | int | 1000 | 可在 Regexp 查詢(正則查詢)中使用的正規表示式的最大長度。預設為 1000。 | |
index.routing.allocation.enable | 控制索引的分片分配 參考 | all、primaries、new_primaries、none | all | Allocation機制,其主要解決的是如何將索引在ES叢集中在哪些節點上分配分片(例如在Node1是建立的主分片,在其他節點上建立複製分片)。舉個例子,如果叢集中新增加了一個節點,叢集的節點由原來的3個變成了4 可選值: all 所有型別的分片都可以重新分配,預設。 primaries 只允許分配主分片。 new_primaries 只允許分配新建立的主分片 none 所有的分片都不允許分配。 |
index.routing.rebalance.enable | 索引的分片重新平衡機制 參考 | all、primaries、replicas、none | all | all 是可以對所有的分片進行平衡;primaries 表示只能對主分片進行平衡;replicas 表示只能對副本進行平衡;none 表示對任何分片都不能平衡,也就是禁用了平衡功能。該值一般不需要修改 |
index.gc_deletes | string | 60s (60秒) | 文件刪除後(刪除後版本號)還可以存活的週期,預設為 60s。 | |
index.default_pipeline | 預設管道聚合器,設定此索引的預設接收節點管道(The default ingest node pipeline),如果設定了預設管道但管道不存在,此索引請求將失敗。可以使用pipeline引數覆蓋預設值,名為“_none”的特殊pipeline不執行攝取管道。 | |||
index.required_pipeline | 必要管道聚合器,此索引所需的攝取節點管道。如果設定了所需的管道且管道不存在,則索引請求將失敗。無法使用管道引數覆蓋所需的管道。不能同時設定預設管道和必需管道。特殊管道名稱_none表示不會執行攝取管道。 |
寫這遍文章主要參考的 ES 官網文件,同時也查詢不少資料進行橫向比較,看了不少的部落格,比較多,在這裡就不列舉了。
本作品採用《CC 協議》,轉載必須註明作者和本文連結