索引模块

编辑

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

索引设置

编辑

索引级别的设置可以针对每个索引进行设置。设置可以是

静态的
它们只能在索引创建时或在关闭的索引上设置,或者使用 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,后者使用 ZSTD 来获得更高的压缩率,但代价是存储字段的读取性能较慢。如果要更新压缩类型,则会在合并段后应用新的压缩类型。可以使用 强制合并 来强制合并段。对索引日志数据集的实验表明,与 default 相比,best_compression 可将存储使用率降低高达约 28%,并具有相似的索引吞吐量(有时会略慢或更快,具体取决于其他使用的选项),同时影响按 ID 获取的延迟在 ~10% 和 ~33% 之间。较高的按 ID 获取的延迟对于许多用例(如日志记录或指标)来说并不重要,因为这些用例实际上并不依赖于按 ID 获取的功能(获取 API 或按 _id 搜索)。
index.mode

index.mode 设置用于控制在特定领域(如时间序列数据或日志的摄取)中应用的设置。存在不同的互斥模式,这些模式用于应用控制文档索引、排序和其他参数的设置或默认值,这些参数的值会影响索引或查询性能。

resp = client.indices.create(
    index="my-index-000001",
    settings={
        "index": {
            "mode": "standard"
        }
    },
)
print(resp)
const response = await client.indices.create({
  index: "my-index-000001",
  settings: {
    index: {
      mode: "standard",
    },
  },
});
console.log(response);
PUT my-index-000001
{
  "settings": {
    "index":{
      "mode":"standard" 
    }
  }
}

此索引使用 standard 索引模式

索引模式支持以下值

null
默认值(与 standard 相同)。
standard
使用默认设置的标准索引。
time_series
(仅限数据流)为存储指标优化的索引模式。有关更多信息,请参阅时间序列索引设置
logsdb
(仅限数据流)日志优化的索引模式。
index.routing_partition_size
自定义 路由 值可以转到的分片数。默认为 1,只能在索引创建时设置。除非 index.number_of_routing_shards 值也为 1,否则此值必须小于 index.number_of_routing_shards。有关如何使用此设置的更多详细信息,请参阅 路由到索引分区
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
可以在 Terms 查询中使用的最大词条数量。默认为 65536
index.max_regex_length
可以在 regexpprefix 查询中使用的值的最大长度。默认为 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 索引设置

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