Elasticsearch扫盲之四: ElasticSearch的index的Settings配置参数详解

ElasticSearch索引配置settings的配置项可分为以下几种类型:

一、静态配置项

所谓静态配置项就是在创建index时指定,创建后不能再修改

1.分片相关的配置
配置项 功能 备选值 默认值 其他说明
index.number_of_shards 当前index拥有的主分片数 5 最大为1024
index.shard.check_on_startup 在启动时是否检查分片 false:打开时不检查损坏;
true:检查物理损坏;
checksum:物理损坏和逻辑损坏都检查
false
index.routing_partition_size 设置的自定义路由可以转到几个分片上 大于1小于主分片数
2.压缩算法设置
配置项 功能 备选值 默认值 其他说明
index.codec 数据压缩算法设置 default:默认全长LZ4压缩算法;
best_compression:拥有更高压缩比,但存储性能会降低
default
3.排序设置
配置项 功能 备选值 其他说明
index.sort.field 用于排序的字段,多个使用数组 排序的字段只能是boolean,numeric,date,keyword类型
index.sort.order 排序方式 asc:正序;
desc:倒序
index.sort.mode 用于多个值的字段的排序模式 max : 选最小值;
min:选最大值
index.sort.missing 当排序字段不存在时指定哪种排序 _first : 按第一个字段来排序;
_last:按最后一个字段来排序
4.数据存储设置
配置项 功能 备选值
index.store.type 存储的方式 fs:文件系统;
simplefs:随机文件存储;
niofs:非阻塞文件系统存储;
mmapfs:mmap内存映射存储
index.store.preload 将索引文件预加载到内存中 *:所有数据;
nvd:存储各个影响分数的因子的数据;
dvd:文档的值;
tim:文件字典;
doc:发布清单;
dim:点数据

二、动态配置项

所谓动态配置项是在创建index时还可以通过API动态来修改

1.分片相关配置
配置项 功能 备选值 默认值 其他说明
index.number_of_replicas 每个主分片拥有的副本数 1
index.auto_expand_replicas 是否根据节点数量,自动扩展副本数量 false 也可以设置0-5的数字
index.routing.allocation.enable 控制此索引的路由分片分配 all:针对所有分片;
primaries:所有主分片;
new_primaries:仅允许分配新建的主分片;
none:不允许分片
all
index.routing.reblance.enable 开启分片重新负载均衡的开关 all:针对所有分片;
primaries:所有主分片;
replicas:所有副本分片;
none:不允许分片
all
2.查询相关的设置
配置项 功能 备选值 默认值 其他说明
index.max_result_window 一次最多获取多少条记录 10000
index.max_inner_result_window 内层的hits的条数和最高的命中的数据条数 100
index.max_rescore_window 重新打分请求的最大数量 10000
index.max_docvalue_fields_search 查询中最大允许的docvalue-field的数量 100
index.max_script_fields 在查询中script_fields的最大数量 10000
index.highlight.max_analyzed_offset 高亮显示最大的字符数
index.max_terms_count 查询语句中terms子名的最大数量 65536
index.max_regex_length 在正则查询表达式中使用的正则表达式最大长度 1000
3.索引读写开关相关的配置
配置项 功能
index.blocks.read_only 是否只允许索引和元数据的读取操作
index.blocks_read_only_allow_delete 是否只允许索引的读操作和删除操作
index.blocks.read 是否禁止索引数据的读取
index.blocks.write 是否禁止索引数据的写操作
index.blocks.metadata 是否禁止元数据的读写操作
4.刷新索引的设置
配置项 功能 备选值 默认值 其他说明
index.refresh.interval 执行刷新操作的频率,索引更新多久才对搜索可见 -1:表示禁止刷新;
1s:表示1秒
1s
index.max_refresh_listeners 每个分片上最大刷新监听器的数量
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
6.慢日志设置
(1)慢搜索日志设置
配置项 功能 默认值
index.search.slowlog.threshold.query.warn warn级别的慢搜索日志的阀值(即多少秒的搜索才算warn级别的慢搜索) 10s
index.search.slowlog.threshold.query.info info级别的慢搜索日志的阀值(即多少秒的搜索才算info级别的慢搜索) 10s
index.search.slowlog.threshold.query.debug debug级别的慢搜索日志的阀值(即多少秒的搜索才算debug级别的慢搜索) 10s
index.search.slowlog.threshold.query.trace trace级别的慢搜索日志的阀值(即多少秒的搜索才算trace级别的慢搜索) 10s
index.search.slowlog.threshold.fetch.warn warn级别的慢获取数据日志的阀值(即多少秒的获取数据才算warn级别的慢获取) 10s
index.search.slowlog.threshold.fetch.info info级别的慢获取日志的阀值(即多少秒的获取数据才算info级别的慢获取) 10s
index.search.slowlog.threshold.fetch.debug warn级别的慢获取日志的阀值(即多少秒的获取数据才算debug级别的慢获取) 500ms
index.search.slowlog.threshold.fetch.trace warn级别的慢获取日志的阀值(即多少秒的搜索才算trace级别的慢获取) 10s
index.search.slowlog.level 慢搜索日志的级别
(2)慢索引日志设置
配置项 功能 默认值
index.indexing.slowlog.threshold.index.warn warn级别的慢索引日志的阀值(即多少秒的索引才算warn级别的慢索引) 10s
index.indexing.slowlog.threshold.index.info info级别的慢索引日志的阀值(即多少秒的索引才算info级别的慢索引) 10s
index.indexing.slowlog.threshold.index.debug debug级别的慢索引日志的阀值(即多少秒的索引才算debug级别的慢索引) 10s
index.indexing.slowlog.threshold.index.trace trace级别的慢索引日志的阀值(即多少秒的索引才算trace级别的慢索引) 10s
index.indexing.slowlog.level 慢索引日志的级别
index.indexing.slowlog.source 记录source的大小 (false/0:记录整个慢日志;1000:记录source中的前1000个字符)
7.mapping相关设置
配置项 功能 备选值 默认值 其他说明
index.mapping.total_fields_limit 一次索引中字段数的最大数量 1000
index.mapping.depth.limit 索引中字段的深度限制(即字段可以嵌套多少层) 20
index.mapping.nested_fields_limit 一个索引中内嵌字段的最大数量 50