索引模块
编辑索引模块编辑
索引模块是为每个索引创建的模块,用于控制与索引相关的所有方面。
索引设置编辑
- 静态的
- 它们只能在索引创建时或在关闭的索引上设置,或者使用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
设置为30
(5 x 2 x 3
),可以按2
或3
的因子进行拆分。换句话说,它可以按如下方式拆分-
5
→10
→30
(先按 2 拆分,然后按 3 拆分) -
5
→15
→30
(先按 3 拆分,然后按 2 拆分) -
5
→30
(按 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.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_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.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
参数按请求控制。可能的值为true
和false
(默认)。
其他索引模块中的设置编辑
索引模块中提供了其他索引设置
X-Pack 索引设置编辑
- 索引生命周期管理
- 指定索引的生命周期策略和滚动别名。