索引模块编辑

索引模块是为每个索引创建的模块,用于控制与索引相关的所有方面。

索引设置编辑

索引级别设置可以按索引设置。设置可以是

静态的
它们只能在索引创建时或在关闭的索引上设置,或者使用update-index-settings API 并将reopen 查询参数设置为true(这将自动关闭并重新打开受影响的索引)。
动态的
可以使用update-index-settings API 在活动索引上更改它们。

您可以在关闭的索引上更改任何已记录的索引设置。但是,在关闭的索引上更改未记录的索引设置不受支持,并且可能会导致错误。

静态索引设置编辑

以下是所有与任何特定索引模块无关的*静态*索引设置的列表

index.number_of_shards

索引应具有的主分片数。默认为1。此设置只能在索引创建时设置。无法在关闭的索引上更改它。

每个索引的分片数限制为1024 个。此限制是一个安全限制,用于防止意外创建可能因资源分配而导致集群不稳定的索引。可以通过在集群中每个节点上指定export ES_JAVA_OPTS="-Des.index.max_number_of_shards=128" 系统属性来修改限制。

index.number_of_routing_shards

index.number_of_shards一起使用的整数值,用于将文档路由到主分片。请参阅_routing 字段

Elasticsearch 在拆分索引时使用此值。例如,一个具有 5 个分片的索引,其number_of_routing_shards 设置为305 x 2 x 3),可以按23 的因子进行拆分。换句话说,它可以按如下方式拆分

  • 51030(先按 2 拆分,然后按 3 拆分)
  • 51530(先按 3 拆分,然后按 2 拆分)
  • 530(按 6 拆分)

此设置的默认值取决于索引中的主分片数。默认值旨在允许您按 2 的因子进行拆分,最多可达 1024 个分片。

在 Elasticsearch 7.0.0 及更高版本中,此设置会影响文档在分片之间的分布方式。使用自定义路由重新索引较旧的索引时,必须显式设置index.number_of_routing_shards 以保持相同的文档分布。请参阅相关的重大更改

index.codec
default 值使用 LZ4 压缩压缩存储的数据,但这可以设置为best_compression,它使用DEFLATE 以获得更高的压缩率,但代价是存储字段性能较慢。如果您要更新压缩类型,则新类型将在段合并后应用。可以使用强制合并强制段合并。对索引日志数据集的实验表明,在最理想的情况下,与default 相比,best_compression 的存储空间使用量最多可降低约 18%,而对索引吞吐量的影响却很小(约 2%)。
index.routing_partition_size
自定义路由值可以使用的分片数。默认为 1,并且只能在索引创建时设置。此值必须小于index.number_of_shards,除非index.number_of_shards 值也为 1。有关如何使用此设置的更多详细信息,请参阅路由到索引分区
index.soft_deletes.enabled
[7.6.0] 在 7.6.0 中已弃用。不建议创建禁用软删除的索引,并且将在未来的 Elasticsearch 版本中删除。 指示索引上是否启用了软删除。软删除只能在索引创建时配置,并且只能在 Elasticsearch 6.5.0 或更高版本上创建的索引上配置。默认为true
index.soft_deletes.retention_lease.period
在分片历史记录保留租约被视为过期之前保留它的最长时间。分片历史记录保留租约可确保在 Lucene 索引上的合并期间保留软删除。如果在将软删除复制到跟随者之前将其合并,则以下过程将因领导者上的历史记录不完整而失败。默认为12h
index.load_fixed_bitset_filters_eagerly
指示是否为嵌套查询预加载缓存的过滤器。可能的值为true(默认值)和false
index.shard.check_on_startup

仅限专家用户。此设置会在分片启动时启用一些非常昂贵的处理,并且仅在诊断集群中的问题时才有用。如果您确实使用它,则应该只在临时使用它,并在不再需要它时将其删除。

Elasticsearch 会在其生命周期的各个点自动对分片的内容执行完整性检查。例如,它会在恢复副本或创建快照时验证传输的每个文件的校验和。它还会在打开分片时验证许多重要文件的完整性,这会在启动节点以及完成分片恢复或重新定位时发生。因此,您可以通过将整个分片的快照保存到新的存储库或将其恢复到新的节点来手动验证其在运行时的完整性。

此设置确定 Elasticsearch 在打开分片时是否执行额外的完整性检查。如果这些检查检测到损坏,则它们将阻止打开分片。它接受以下值

false
打开分片时不要执行额外的损坏检查。这是默认的建议行为。
checksum
验证分片中每个文件的校验和是否与其内容匹配。这将检测从磁盘读取的数据与 Elasticsearch 最初写入的数据不同的情况,例如由于未检测到的磁盘损坏或其他硬件故障。这些检查需要从磁盘读取整个分片,这需要相当长的时间和 IO 带宽,并且可能会通过从文件系统缓存中逐出重要数据来影响集群性能。
true
执行与checksum 相同的检查,还会检查分片中的逻辑不一致,例如,由于 RAM 或其他硬件故障导致数据在写入时损坏。这些检查需要从磁盘读取整个分片(这需要相当长的时间和 IO 带宽),然后对分片的内容执行各种检查(这需要相当长的时间、CPU 和内存)。

动态索引设置编辑

以下是所有与任何特定索引模块无关的*动态*索引设置的列表

index.number_of_replicas

每个主分片具有的副本数。默认为 1。

WARNING: Configuring it to 0 may lead to temporary availability loss
during node restarts or permanent data loss in case of data corruption.
index.auto_expand_replicas

根据集群中数据节点的数量自动扩展副本的数量。设置为以破折号分隔的下限和上限(例如0-5),或对上限使用all(例如0-all)。默认为false(即禁用)。请注意,自动扩展的副本数量仅考虑分配过滤规则,但忽略其他分配规则,例如每个节点的分片总数,如果适用的规则阻止分配所有副本,这可能会导致集群健康状况变为YELLOW

如果上限为all,则此索引将忽略分片分配感知cluster.routing.allocation.same_shard.host

index.search.idle.after
分片在被视为搜索空闲之前可以多长时间不接收搜索或获取请求。(默认为30s
index.refresh_interval
执行刷新操作的频率,这会使对索引的最新更改对搜索可见。默认为1s。可以设置为-1 以禁用刷新。如果未显式设置此设置,则至少index.search.idle.after 秒内未看到搜索流量的分片将不会接收后台刷新,直到它们收到搜索请求。命中正在等待刷新的空闲分片的搜索将仅针对该分片触发刷新作为搜索操作的一部分。此行为旨在在默认情况下(未执行搜索时)自动优化批量索引。为了选择退出此行为,应将1s 的显式值设置为刷新间隔。
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_fields 的最大数量。默认为 100。文档值字段的成本很高,因为它们可能会导致每个字段每个文档的查找。
index.max_script_fields
查询中允许的 script_fields 的最大数量。默认为 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.max_refresh_listeners
索引的每个分片上可用的刷新侦听器最大数量。这些侦听器用于实现 refresh=wait_for
index.analyze.max_token_count
使用 _analyze API 可以生成的最大标记数。默认为 10000
index.highlight.max_analyzed_offset
将为突出显示请求分析的最大字符数。此设置仅适用于在没有偏移量或词条向量的索引文本上请求突出显示时。默认为 1000000
index.max_terms_count
词条查询中可以使用的最大词条数。默认为 65536
index.max_regex_length
Regexp 查询中可以使用的正则表达式的最大长度。默认为 1000
index.query.default_field

(字符串或字符串数组)匹配一个或多个字段的通配符 (*) 模式。以下查询类型默认搜索这些匹配字段

默认为 *,它匹配所有符合 词条级查询条件的字段,但不包括元数据字段。

index.routing.allocation.enable

控制此索引的分片分配。可以设置为

  • all(默认)- 允许为所有分片分配分片。
  • primaries - 仅允许为主分片分配分片。
  • new_primaries - 仅允许为新创建的主分片分配分片。
  • none - 不允许分配分片。
index.routing.rebalance.enable

为此索引启用分片重新平衡。可以设置为

  • all(默认)- 允许所有分片进行分片重新平衡。
  • primaries - 仅允许主分片进行分片重新平衡。
  • replicas - 仅允许副本分片进行分片重新平衡。
  • none - 不允许进行分片重新平衡。
index.gc_deletes
已删除文档的版本号可用于进一步的版本控制操作的时间长度。默认为 60s
index.default_pipeline
索引的默认摄取管道。如果设置了默认管道但管道不存在,则索引请求将失败。可以使用 pipeline 参数覆盖默认值。特殊管道名称 _none 表示不会运行默认摄取管道。
index.final_pipeline

索引的最终摄取管道。如果设置了最终管道但管道不存在,则索引请求将失败。最终管道始终在请求管道(如果指定)和默认管道(如果存在)之后运行。特殊管道名称 _none 表示不会运行最终摄取管道。

您不能使用最终管道来更改 _index 字段。如果管道尝试更改 _index 字段,则索引请求将失败。

index.hidden
指示默认情况下是否应隐藏索引。使用通配符表达式时,默认情况下不会返回隐藏索引。此行为通过使用 expand_wildcards 参数按请求控制。可能的值为 truefalse(默认)。

其他索引模块中的设置编辑

索引模块中提供了其他索引设置

分析
用于定义分析器、标记器、标记过滤器和字符过滤器的设置。
索引分片分配
控制在何处、何时以及如何将分片分配给节点。
映射
启用或禁用索引的动态映射。
合并
控制后台合并进程如何合并分片。
相似度
配置自定义相似度设置以自定义如何对搜索结果进行评分。
慢日志
控制如何记录慢速查询和获取请求。
存储
配置用于访问分片数据的文件系统类型。
事务日志
控制事务日志和后台刷新操作。
历史记录保留
控制索引中操作历史记录的保留。
索引压力
配置索引背压限制。

X-Pack 索引设置编辑

索引生命周期管理
指定索引的生命周期策略和滚动别名。