Index Settings
索引级别的设置可以针对每个索引单独设置。这些设置可以是 :
static(静态的)
:只能在索引创建时或者在状态为 closed index(闭合的索引)上设置。dynamic(动态的)
:可以使用 update-index-settingsAPI 在状态为 live index(激活的索引)上更改它们。
1、Static index settings(静态索引设置)
-
index.number_of_shards
:索引应该具有的主碎片数。默认值为1。此设置只能在创建索引时设置。不能在闭合索引上更改它。注意:每个索引的碎片数量限制为1024个。此限制是一个安全限制,用于防止由于资源分配而意外创建可能会破坏集群稳定的索引。可以通过在作为集群一部分的每个节点上指定export ES_JAVA_OPTS=“-Des.index.max_number_of_shards=128"
系统属性来修改该限制。 -
index.shard.check_on_startup
:是否应在索引打开前检查分片是否损坏,当检查到分片损坏将禁止分片被打开。false
:默认值,打开分片时不检查分片是否损坏。checksum
:检查屋里损坏。true
:检查物理和逻辑损坏,这将消耗大量的内存和 CPU。
-
index.odec
:默认值使用LZ4压缩来压缩存储的数据,但可以将其设置为best_compression
,它使用DEFLATE来获得更高的压缩比,而牺牲了较慢的存储字段性能。如果要更新压缩类型,则将在合并线段后应用新的压缩类型。可以使用强制合并来强制合并段。 -
index.routing_partition_size
:自定义路由值可以访问的碎片数。默认为1,并且只能在创建索引时设置。该值必须小于index.number_of_shards
,除非index.number_of _shards值也是1。 -
index.load_fixed_bitset_filters_eagerly
:指示是否为嵌套查询预加载缓存筛选器。可能的值有true(默认值)和false。 -
index.hidden
:指示默认情况下是否应隐藏索引。使用通配符表达式时,默认情况下不会返回隐藏索引。通过使用expand_wildcards参数来控制每个请求的这种行为。可能的值有true和false(默认值)。
2、Dynamic index settings(动态索引设置)
-
index.number_of_replicas
:每个主分片具有的副本数。默认值为1。 -
index.auto_expand_replicas
:根据群集中数据节点的数量自动扩展复制副本的数量。设置为以破折号分隔的下限和上限(例如0-5),或使用all作为上限(例如0-all)。默认为false(即禁用)。请注意,副本的自动扩展数量只考虑了分配筛选规则,而忽略了任何其他分配规则,如碎片分配意识和每个节点的总碎片,如果适用的规则阻止分配所有副本,这可能会导致集群运行状况变为黄色。 -
index.search.idle.after
:shard在被视为搜索空闲之前无法接收搜索或获取请求的时间。(默认值为30s) -
index.refresh_interval
:执行刷新操作的频率,这将使最近对索引的更改对搜索可见。默认为1秒。可设置为-1以禁用刷新。如果未显式设置此设置,则在收到搜索请求之前,至少在index.search.idle.After秒内未看到搜索流量的分片将不会收到后台刷新。命中等待刷新的空闲碎片的搜索将等待下一次后台刷新(在1秒内)。此行为旨在在未执行任何搜索的默认情况下自动优化大容量索引。为了选择退出此行为,应将1的显式值设置为刷新间隔。 -
index.max_result_window
:搜索到此索引时的最大值From+Size。默认为10000。搜索请求占用的堆内存和时间与From+Size成正比,这限制了该内存。 -
index.max_inner_result_window
:此索引的内部命中定义和顶级命中聚合的最大值From+Size。默认为100。内部命中和顶级命中聚合占用的堆内存和时间与From+Size成比例,这限制了该内存。 -
index.max_rescore_window
:此索引搜索中的rescore请求的最大Window_Size值。默认为index.max_Result_Window,默认为10000。搜索请求占用堆内存和时间与max(Window_Size,from+Size)成正比,这会限制该内存。 -
index.max_docvalue_fields_search
:查询中允许的最大docvalue_field数。默认为100。文档值字段的成本很高,因为它们可能会导致按字段、按文档进行查找。 -
index.max_script_fields
:查询中允许的最大SCRIPT_FIELD数。默认为32 -
index.max_ngram_diff
:NGramTokenizer和NGramTokenFilter的min_gram和max_gram之间允许的最大差值。默认为1。 -
index.max_shingle_diff
:Shingle令牌筛选器的max_shingle_size和min_shingle_size之间允许的最大差值。默认为3。 -
index.blocks.read_only
:设置为True可使索引和索引元数据为只读,设置为False可允许写入和更改元数据。 -
index.blocks.read_only_allow_delete
:类似于index.locks.read_only,但也允许删除索引以使更多资源可用。基于磁盘的碎片分配器可以自动添加和删除该块。 -
index.blocks.read
:设置为TRUE可禁用对索引的读取操作。 -
index.blocks.write
:设置为TRUE可禁用对索引的数据写入操作。与READ_ONLY不同,此设置不影响元数据。例如,您可以使用WRITE块关闭索引,但不能使用READ_ONLY块关闭索引。 -
index.blocks.metadata
:设置为TRUE可禁用索引元数据读取和写入。 -
index.max_refresh_listeners
:索引的每个碎片上可用的刷新监听程序的最大数量。这些侦听器用于实现REFRESH=WAIT_FOR。 -
index.analyze.max_token_count
:可以使用分析API生成的最大令牌数。默认为10000。 -
index.highlight.max_analyzed_offset
:将为突出显示请求分析的最大字符数。仅当在没有偏移量或术语向量的索引文本上请求突出显示时,此设置才适用。默认为1000000。 -
index.max_terms_count
:术语查询中可以使用的最大术语数。默认为65536。 -
index.max_regex_length
:可在Regexp查询中使用的正则表达式的最大长度。默认为1000。 -
index.routing.allocation.enable
:控制此索引的碎片分配。它可以设置为:all
:(默认)-允许为所有碎片分配碎片。primaries
:仅允许为主碎片分配碎片。new_primaries
:仅允许为新创建的主碎片分配碎片。none
:不允许分配碎片。
-
index.routing.rebalance.enable
:为此索引启用碎片重新平衡。它可以设置为:all
:(默认)-允许对所有碎片进行碎片重新平衡。primaries
:仅允许对主碎片重新平衡碎片。replicas
:仅允许对副本碎片进行碎片重新平衡。none
:不允许碎片重新平衡。
-
index.gc_deletes
:已删除文档的版本号可用于进一步版本化操作的时间长度。默认为60。 -
index.default_pipeline
:此索引的默认接收节点管道。如果设置了默认管道并且该管道不存在,则索引请求将失败。可以使用管道参数覆盖缺省值。特殊管道名称_NONE表示不应运行接收管道。 -
index.final_pipeline
:此索引的最终接收节点管道。如果设置了最终管道并且该管道不存在,则索引请求将失败。最终管道始终在请求管道(如果指定)和默认管道(如果存在)之后运行。特殊管道名称_NONE表示不会运行任何接收管道。
3、其他可用设置
Analysis
:定义 analyzers(分析器)、tokenizers(分词器)、tokenfilters(词元过滤器)和 characterfilters(字符过滤器)。Index shard allocation
:控制索引分配给节点的位置、时间、以及分片的方式。Mapping
:启用或禁用索引的动态映射。Merging
:控制后台合并线程如何合并分片。Similarities
:配置自定义相似性设置以自定义搜索结果的计分方式。Slowlog
:控制记录搜索和索引请求的响应时间。Store
:配置用于存储分片数据的文件系统类型。Translog
:控制事务日志和后台刷新操作。History retention
:设置以控制索引中操作历史的保留。