索引级别的设置,可以在每一个索引上使用。
静态设置:只能在索引创建时或关闭索引上设置。
动态设置:可以使用update-index-settings API在打开的索引上更改它们。
警告:更改已关闭索引的静态或动态索引设置,可能会导致设置不正确;如果不删除并重新创建索引,则无法纠正。
Static index settings
- index.number_of_shards:设置索引的主分片数,默认是:5;只能在创建索引的时候设置,在索引关闭的时候不能使用。注意:每个索引的最大分片数是:1024,限制索引的分片,可以防止因分片过多,占用过多的资源,导致系统不稳定。这个最大分片数:1024,可以被修改。export ES_JAVA_OPTS="-Des.index.max_number_of_shards=128"。
- index.shard.check_on_startup:在打开索引分片之前是否检查分片。检测到损坏的分片时,它将阻止分片被打开。
false
:(默认)打开分片时不检查损坏。checksum
:检查物理损坏。true
:物理损坏和逻辑损坏都检查。非常消耗CPU和内存fix
:物理损坏和逻辑损坏都检查。已损坏的段(Segment)将移除,会导致数据丢失。慎用!
警告:检查大索引时,将很耗时。 - index.codec:默认值:
default
,是使用LZ4压缩算法,压缩存储的数据;可以设置成best_compression
;它使用 DEFLATE 拥有更高的压缩比,但是存储性能将会降低。在修改压缩类型之后,在下次段合并的时候将会使用。 - index.routing_partition_size:设置自定义的路由值可以转到几个分片上,也就是取得分片的一个子集,然后再在子集中选择一个分片 要开启这个功能,需要把值设置成大于1且小于
index.number_of_shards
;详见
Dynamic index settings
- index.number_of_replicas:每个主分片拥有的副本数,默认是:1。
- index.auto_expand_replicas:设置是否根据节点数量,自动扩展副本数量。可以设置上限和下限(e.g. 0-5),也可以使用
all
做上限(e.g. 0-all);默认是:false;注意:这个分配副本的设置和其他关于副本的设置没有关联;如果用的规则阻止分配所有副本,则可能导致群集运行状况变为黄色。 - index.refresh_interval:索引执行刷新操作的频率,这会使索引的最近更改对搜索可见。默认是:1s;可以设置成:-1,禁用刷新。
- index.max_result_window:在搜索的时候,from:决定要返回的文档从哪里开始,size:决定返回多少条。假如from+size很大的话,将会消耗很多的内存和时间;这个设置就是为了防止内存不够用的情况。默认是:10000,也就是说from+size不能大于10000;如果需要获取更多的数据,请看 Scroll 和 Search After
- index.max_inner_result_window:和
index.max_result_window
原理差不多,这个设置限制的是返回结果中的结果。默认是:100。 - index.max_rescore_window:在搜索此索引时,rescore请求的window_size的最大值。默认为index.max_result_window,即10000。搜索请求占用堆内存和时间与max(window_size,from + size)成比例,这限制了内存的使用。
- index.max_docvalue_fields_search:查询中允许的最大docvalue_field数,默认为100,Doc-value 字段成本很高,因为它们可能会导致每个字段的每个文档搜索。
- index.max_script_fields:查询中允许的最大script_field数。默认为32。
- index.max_ngram_diff:NGramTokenizer和NGramTokenFilter的min_gram和max_gram之间允许的最大差异。默认为1。
- index.max_shingle_diff:ShingleTokenFilter的max_shingle_size和min_shingle_size之间允许的最大差异。默认为3。
- index.blocks.read_only:设置为true以使索引和索引元数据只读,false设置为允许写入和元数据更改。
- index.blocks.read_only_allow_delete:与index.blocks.read_only相同,但允许删除索引以释放资源。
- index.blocks.read:设置为true以禁用对索引的读取操作。
- index.blocks.write:设置为true以禁用对索引的数据写入操作。与read_only不同,此设置不会影响元数据。例如,您可以使用write阻塞关闭索引,但不能使用read_only阻塞关闭索引。
- index.blocks.metadata:设置为true以禁用索引元数据读取和写入。
- index.max_refresh_listeners:索引的每个分片上可用的最大刷新侦听器数。refresh=wait_for.
- index.highlight.max_analyzed_offset:高亮显示的最大字符数。此设置仅在对没有偏移或词向量的索引的文本上适用。默认情况下,此设置在6.x中未设置,默认为-1。
- index.max_terms_count:Term查询中可以使用的最大Term数。默认为65536。
- index.routing.allocation.enable:控制此索引的分片分配。
all
:默认,允许分配所有的分片;primaries
:只允许分配主分片new_primaries
:仅允许分配新创建的主分片none
:不允许分配 - index.routing.rebalance.enable:为此索引启用分片重新平衡。
all
:默认,允许分片重新平衡。primaries
:只允许主分片重新平衡。replicas
:只允许副本分片重新平衡。none
:不允许分片重新分配。 - index.gc_deletes:允许已删除文档的版本号,仍可用于进一步版本化操作的时间长度。默认60s
- index.max_regex_length:Regexp Query中可以使用的正则表达式的最大长度。默认为1000.
- mapping.coerce: 默认是:true,强制类型转换,把json中的值转为ES中字段的数据类型,譬如:把字符串"5"转为integer的5;false:当json的值与es字段类型不匹配将会拒绝。