索引模块
edit索引模块
edit索引模块是按索引创建的模块,控制与索引相关的所有方面。
索引设置
edit您可以在已关闭的索引上更改任何已记录的索引设置。然而,更改未记录的索引设置在已关闭的索引上是不受支持的,并且可能会导致错误。
静态索引设置
edit以下是所有不与任何特定索引模块关联的静态索引设置列表:
-
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(split by 2, then by 3) -
5→15→30(split by 3, then by 2) -
5→30(split by 6)
此设置的默认值取决于索引中的主分片数量。默认设置旨在允许您按2的倍数进行拆分,最多可达1024个分片。
在 Elasticsearch 7.0.0 及更高版本中,此设置会影响文档在分片之间的分布方式。当使用自定义路由重新索引旧索引时,您必须显式设置
index.number_of_routing_shards以保持相同的文档分布。请参阅 相关的重大更改。 -
-
index.codec -
default值使用 LZ4 压缩存储的数据,但可以将其设置为best_compression, 该设置使用 ZSTD 以获得更高的压缩比,但会牺牲存储字段读取性能。 如果您正在更新压缩类型,新的压缩类型将在段合并后应用。可以使用 force merge 强制进行段合并。对索引日志数据集的实验表明,best_compression相比default可以减少高达 ~28% 的存储使用量,并且索引吞吐量相似(有时根据其他使用的选项稍慢或稍快), 同时影响按 ID 获取的延迟在 ~10% 到 ~33% 之间。对于许多用例(如日志记录或指标),较高的按 ID 获取延迟并不是问题,因为这些用例并不真正依赖于按 ID 获取功能(Get API 或通过 _id 搜索)。 -
index.mode -
设置
index.mode用于控制特定领域(如时间序列数据或日志的摄取)中应用的设置。 存在不同的互斥模式,这些模式用于应用控制文档索引、排序和其他影响索引或查询性能的参数的设置或默认值。索引模式支持以下值:
-
null -
默认值(与
standard相同)。 -
standard - 标准索引,使用默认设置。
-
time_series - 针对存储在 TSDS 设置 中的指标文档进行优化的索引模式。
-
logsdb -
针对存储日志进行优化的索引模式。它对
hostname和timestamp字段应用默认排序设置,并使用 合成_source。仍然允许对不同字段进行 索引排序。 [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力修复任何问题,但技术预览中的功能不受官方 GA 功能支持 SLA 的约束。
-
-
index.routing_partition_size -
自定义路由值可以到达的分片数量。
默认为1,并且只能在索引创建时设置。此值必须小于
index.number_of_routing_shards,除非index.number_of_routing_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 和内存。
-
动态索引设置
edit以下是所有与特定索引模块无关的动态索引设置列表:
-
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。Doc-value字段由于可能会导致每个字段每个文档的查找,因此开销较大。 -
index.max_script_fields -
查询中允许的最大
script_fields数量。 默认为32。
-
index.max_shingle_diff -
shingletoken filter 允许的 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 -
(字符串或字符串数组) 通配符 (
*) 模式匹配一个或多个字段。以下查询类型默认在这些匹配字段中进行搜索:默认为
*,它匹配所有符合 term-level queries 条件的字段,但不包括元数据字段。
-
index.routing.allocation.enable -
控制此索引的分片分配。它可以设置为:
-
all(默认) - 允许所有分片的分片分配。 -
primaries- 仅允许主分片的分片分配。 -
new_primaries- 仅允许新创建的主分片的分片分配。 -
none- 不允许任何分片分配。
-
-
index.routing.rebalance.enable -
启用此索引的分片重新平衡。可以设置为:
-
all(默认) - 允许所有分片的分片重新平衡。 -
primaries- 仅允许主分片的分片重新平衡。 -
replicas- 仅允许副本分片的分片重新平衡。 -
none- 不允许任何分片的分片重新平衡。
-
-
index.gc_deletes -
已删除文档的版本号保留以供进一步版本化操作的时间长度。
默认为
60秒。
-
index.default_pipeline -
索引的默认摄取管道。如果设置了默认管道且该管道不存在,索引请求将会失败。可以使用
pipeline参数覆盖默认设置。特殊管道名称_none表示不会运行默认的摄取管道。
-
index.final_pipeline -
索引的最终摄取管道。如果设置了最终管道且该管道不存在,索引请求将会失败。 最终管道总是在请求管道(如果指定)和默认管道(如果存在)之后运行。特殊的管道名称
_none表示不会运行最终的摄取管道。您不能使用最终管道来更改
_index字段。如果管道尝试更改_index字段,索引请求将会失败。 -
index.hidden -
指示索引是否应默认隐藏。隐藏的索引在使用通配符表达式时默认不会返回。此行为通过使用
expand_wildcards参数在每个请求中进行控制。可能的值为true和false(默认)。
其他索引模块中的设置
edit其他索引设置在索引模块中可用:
- Analysis
- 定义分析器、分词器、词元过滤器和字符过滤器的设置。
- Index shard allocation
- 控制分片分配到节点的位置、时间和方式。
- Mapping
- 启用或禁用索引的动态映射。
- Merging
- 后台合并过程中对分片合并方式的控制。
- Similarities
- 配置自定义相似度设置以自定义搜索结果的评分方式。
- Slowlog
- 控制如何记录慢查询和获取请求。
- Store
- 配置用于访问分片数据的文件系统类型。
- Translog
- 控制事务日志和后台刷新操作。
- History retention
- 控制索引中操作历史记录的保留。
- Indexing pressure
- 配置索引背压限制。
X-Pack 索引设置
edit- Index lifecycle management
- 指定索引的生命周期策略和滚动别名。