Index设置
Index级别的设置可以为每个idnex进行索引,包括:
static(静态):只能在索引创建和关闭索引时设置.
dynamic(动态):在索引生存的时候都可以通过update-index-settings修改。
| 警告:改变已关闭的索引的设置可能会造成不正确的配置,并且修正它需要删除后重建这个索引。 |
|---|
静态索引配置
下面列出了所有不关联特定索引模块的索引静态配置。
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](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#index-number-of-shards)配套使用,路由文档到主分片的数量。详情_routing field。
Elasticsearch使用这个值来拆分索引。例如,一个主分片为5,index.number_of_routing_shards为30的索引可能会被拆分因子2或者3拆分。换句话说,拆分可能如下:
- 5->10->30(先2后3)
- 5->15->30(先3后2)
- 5->30(被6拆分)
默认值取决于索引的主分片数量。默认值被设计来允许你以因子2拆分到最多1024个分片。
| 注意:在Elasticsearch7及以后版本中,这个设置会影响到文档如何跨节点分布。当使用custom routing重建一个旧索引时,必须指定index.number_of_routing_shards来维护相同的文档分布。详情见related breaking change |
|---|
index.codec
默认采用LZ4压缩数据,但是可以被设置为使用更高效DEFLATE压缩方式的best_compression,代价就是存储数据时花费的时间要多些。如果你更新压缩方式,新的设置将会在段合并后生效。段的合并可以强制使用force merge。
index.routing_partition_size
自定义的路由值最大为分片的数量。默认为1,并且只能在创建索引时指定。这个值必须小于index.number_of_shards,除非index.number_of_shards为1。详情见Routing to an index partition。
index.soft_deletes.enabled
是否在索引上启用软删除。软删除只能在创建索引时配置并且只支持Elasticsearch6.5.0后的版本。默认值为true。
index.soft_deletes.retention_lease.period
保留a shard history retention lease最大的周期,直到它过期之前。Shard history retention leases确保了在Lucene索引上合并时软删除被保留。如果一个软删除在可被follower复制之前合并了,后面的进程会失败,因为leader上的历史不完整。默认为12h。
index.load_fixed_bitset_filters_eagerly
设置cached filters是否为内嵌查询预加载。true或者false,默认为true。
index.hidden
索引是否默认隐藏。使用通配符表达式查询时隐藏的索引不会返回。每个请求使用expand_wildcards来控制这行为。值为true或者false,默认为false。
index.shard.check_on_startup
| 警告:这个设置在启动分片时会启用开销非常大的进程,并且只对诊断集群问题有用。要用的话只能临时的使用它,一旦不需要了就该马上移除。 |
|---|
Elasticsearch会在分片生命周期各个点对其内容执行完整的检查。列如当移除副本和创建快照时检查每个文件校验码。当打开一个分片时(发生在启动节点和完成分片恢复或重定位时)也会检查一些重要文件的完整性。当分片启动时你可以您通过将整个分片的快照保存到一个新的存储库或将其恢复到一个新的节点来手动验证整个分片的完整性。
这个设置决定了Elasticsearch是否要在分片打开时执行额外的完整性检查。如果检查失败那么会阻止分片被启动。可以设置为如下参数:
false
在分片被打开时不执行额外的检查,默认也是推荐的行为。
checksum
检查分片中每个文件的校验码是否与其内容匹配。这样能检测到磁盘上的数据和Elasticsearch原始写入不一致的情况,for instance due to undetected disk corruption or other hardware failures。这项检查需要从磁盘中读取全部的分片并且会花费大量的时间和IO。可能造成系统缓存中的重要数据被移除从而会影响集群的性能。
true
包含了checksum的功能并且也检查分片的逻辑逻辑,例如由于RAM或者硬件错误导致数据异常。这项检查需要从磁盘中读取全部的分片并且会花费大量的时间和IO。并且会执行各种关于分片的检查,会花费大量时间、CPU和内存。
