ElasticSearch索引配置settings的配置项可分为以下几种类型:
1、静态配置项
所谓静态配置项就是在创建index时指定,创建后不能再修改。
1.1、分片相关的配置
配置项 | 功能 | 备选值 | 默认值 | 其他说明 |
index.number_of_shards | 当前index拥有的主分片数 | 5 | 最大为1024 |
**index.**shard.check_on_startup | 在启动时是否检查分片 | false:打开时不检查损坏; | ||
true:检查物理损坏; |
checksum:物理损坏和逻辑损坏都检查 | false | |||
index.routing_partition_size | 设置的自定义路由可以转到几个分片上 | 大于1小于 |
1.2、压缩算法设置
配置项 | 功能 | 备选值 | 默认值 | 其他说明 |
index.codec | 数据压缩算法设置 | default:默认全长LZ4压缩算法; | ||
best_compression:拥有更高压缩比,但存储性能会降低 | default |
1.3、排序设置
配置项 | 功能 | 备选值 | 其他说明 |
index.sort.field | 用于排序的字段,多个使用数组 | ||
排序的字段只能是boolean,numeric,date, |
keyword类型
|
| index.sort.order | 排序方式 | asc:正序;
desc:倒序 | |
| index.sort.mode | 用于多个值的字段的排序模式 | max : 选最小值;
min:选最大值 | |
| index.sort.missing | 当排序字段不存在时指定哪种排序 | _first : 按第一个字段来排序;
_last:按最后一个字段来排序 | |
1.4、数据存储设置
配置项 | 功能 | 备选值 |
index.store.type | 存储的方式 | fs:文件系统; |
simplefs:随机文件存储; | ||
niofs:非阻塞文件系统存储; |
mmapfs:mmap内存映射存储 | ||
index.store.preload | 将索引文件预加载到内存中 | * :所有数据; |
nvd:存储各个影响分数的因子的数据; | ||
dvd:文档的值; |
tim:文件字典; | ||
doc:发布清单; | ||
dim:点数据 |
2、动态配置项
所谓动态配置项是在创建index后,还可以通过API动态来修改。
2.1、分片相关配置
配置项 | 功能 | 备选值 | 默认值 | 其他说明 |
2.2、查询相关的设置
2.3、索引读写开关相关的配置
2.4、刷新索引的设置
配置项 | 功能 | 备选值 | 默认值 | 其他说明 |
index.refresh.interval | 执行刷新操作的频率,索引更新多久才对搜索可见 | -1:表示禁止刷新; | ||
1s:表示1秒 | 1s | |||
index.max_refresh_listeners | 每个分片上最大刷新监听器的数量 |
2.5、translog设置
配置项 | 功能 | 备选值 | 默认值 | 其他说明 |
index.translog.sync_interval | 将数据同步到磁盘的频率 | 5s | ||
index.translog.durablility | 将数据刷新到磁盘的时机 | request:每次请求都同步刷新; | ||
async:后台按照刷新频率定时刷新 |
index.translog.flush_threshold_size | 刷新日志的最大阀值 | 512M | ||
index.translog.retention.size | 中继日志文件保存数据的总容量 | 512M | ||
index.translog.retention.age | 中继日志文件保存的最长时间 | 12h |
2.6、慢日志设置
(2)慢索引日志设置
2.7、mapping相关设置
3、示例
PUT/my_index { "settings": { "index": { "number_of_shards": "1", "number_of_replicas": "1", "refresh_interval": "60s", "analysis": { "filter": { "tsconvert": { "type": "stconvert", "convert_type": "t2s", "delimiter": "," }, "synonym": { "type": "synonym", "synonyms_path": "analysis/synonyms.txt" } }, "analyzer": { "ik_max_word_synonym": { "filter": ["synonym", "tsconvert", "standard", "lowercase", "stop"], "tokenizer": "ik_max_word" }, "ik_smart_synonym": { "filter": ["synonym", "standard", "lowercase", "stop"], "tokenizer": "ik_smart" } }, "mapping": { "coerce": "false", "ignore_malformed": "false" }, "indexing": { "slowlog": { "threshold": { "index": { "warn": "2s", "info": "1s" } } } }, "provided_name": "hospital_202101070533", "query": { "default_field": "timestamp", "parse": { "allow_unmapped_fields": "false" } }, "requests": { "cache": { "enable": "true" } }, "search": { "slowlog": { "threshold": { "fetch": { "warn": "1s", "info": "200ms" }, "query": { "warn": "1s", "info": "500ms" } } } } } } } }
固定属性
index.creation_date:顾名思义索引的创建时间戳。
index.uuid:索引的 uuid 信息。
index.version.created:索引的版本号。
索引静态配置
index.number_of_shards:索引的主分片数,默认值是 5。这个配置在索引创建后不能修改;在 es 层面,可以通过 es.index.max_number_of_shards 属性设置索引最大的分片数,默认为 1024。
index.codec:数据存储的压缩算法,默认值为 LZ4,可选择值还有 best_compression,它比 LZ4 可以获得更好的压缩比(即占据较小的磁盘空间,但存储性能比 LZ4 低)。
index.routing_partition_size:路由分区数,如果设置了该参数,其路由算法为:( hash(_routing) + hash(_id) % index.routing_parttion_size ) % number_of_shards。如果该值不设置,则路由算法为 hash(_routing) % number_of_shardings,_routing 默认值为 _id。
静态配置里,有重要的部分是配置分析器(config analyzers)。
index.analysis:分析器最外层的配置项,内部主要分为 :
char_filter:定义新的字符过滤器件。
tokenizer:定义新的分词器。
filter:定义新的 token filter,如同义词 filter。
analyzer:配置新的分析器,一般是char_filter、tokenizer 和一些 token filter 的组合。
索引动态配置
index.number_of_replicas:索引主分片的副本数,默认值是 1,该值必须大于等于 0,这个配置可以随时修改。
index.refresh_interval:执行新索引数据的刷新操作频率,该操作使对索引的最新更改对搜索可见,默认为 1s。也可以设置为 -1 以禁用刷新