1、显示索引设置
要查看索引设置,请使用_settings API,然后使用GET方法。
1.1、查看各个索引的设定
检查索引new_index的设置,如下所示:
获取/新建索引/设置
回应如下。
{
'新索引' :
“设置”:
索引:
'创建日期' : ' 1556890383056 ',
'编号共享' : '1',
'编号复制: '1',
' uuid ' : ' zzlhcatasimuytherrkjqa ',
版本:
'创建' : ' 7000099 '
(、
'提供名称' : '新建索引'
}
}
}
}
响应信息包括索引的创建日期、主分片数和副本数以及uuid等信息。
1.2、查看多个索引的信息
多个索引中的信息可以在英文逗号“,”中指定多个索引名称,也可以指定通配符以匹配多个索引。 操作如下。
获取/新建索引,新建索引2 /设置
# #或
获取/新建索引*/_设置
如果响应包含多个索引的设置信息,则相应的配置属于相应的索引下,如下所示:
{
'新索引' :
“设置”:
.
}
(、
'新索引2 ' :
“设置”:
.
}
(、
.
}
1.3、查看指定构成项目的信息
显示所有配置时,可能返回的内容过多。 在这种情况下,可以通过指定要在参数中显示的配置项目(如只显示主切片数量的设置)来执行以下操作:
获取/新建_索引/_设置/索引.编号_共享
只返回当前索引的主切片数。 如下所示。
{
'新索引' :
“设置”:
索引:
'编号共享' : '1'
}
}
}
}
2、修改索引设置
Elasticsearch有一个称为动态参数的参数,可以在运行时进行调整。 可以在_settings API中更改动态参数。 操作时可以使用PUT方法一次更改一个或多个动态参数的值。 设置完成后,相应的配置将立即生效。
2.1、修正示例
修改索引副本
有些操作场景需要写入大量的数据。 在此期间,不需要或几乎不需要向外部提供搜索服务。 为了加快索引的速度,请考虑将副本数设置为0,在数据索引完成之后再设置索引的副本数据。
下面的示例操作将索引new_index的副本数设置为0。
put /新索引/设置
{
索引:
'编号复制:0
}
}
更改完成后,将删除所有副本,如果将其设置为大于0的值,副本将自动平衡分配。
更改刷新动作的频率
刷新操作是指将已通过索引缓冲器解析的数据段写入文件系统缓存的操作。 默认操作频率为每隔1秒。 这样可以检测未写入磁盘的数据,从而确保Elasticsearch的准实时性和Elasticsearch的可靠性
但是,有时需要大量的写入数据,这些数据不需要立即检索。 此时,如果保持默认的1秒钟刷新频率,则会影响索引的写入。 在这种情况下,可以修改刷新频率,以便在写入大量数据时不执行刷新频率,而是在执行后重新进行调整。
如果将刷新频率设置为-1,将禁用刷新操作,如下所示:
put /新索引/设置
{
索引:
'刷新间隔' :-1
}
}
如果使用以上两个值的修改来满足适当的APP场景,则可以加快索引的速度。
2.2、常用索引动态配置参数
参数名称
说明
索引号复制
每个母版的副本数。 默认值为1。
索引.自动扩展复制
此配置项控制集群中的副本数量是否根据集群中的数据节点数量而扩展。 默认值为false,表示副本的数量不会根据数据节点而扩展。 如果要扩展,可以将值设置为数值范围。 例如,“0-3”表示群集中一个主片的拷贝数在0到3之间,有时也可以设置为“0-all”,具体取决于群集中的数据节点。 “all”表示集群中所有数据集点数。
注:
自动扩展的复制副本数量没有考虑复制副本分配中可能存在的其他限制规则,如分片识别、过滤和每个节点的总分片限制。 如果应用的规则阻止了所有复制副本的资源调配,则群集的运行状况可能会变为黄色。
索引.搜索. idle.after
如果无论安装片多久都没有收到请求,则会判断为空闲时间,默认值为30秒。
索引
.refresh_interval执行刷新操作的频率,该操作使索引的最近更改对搜索可见, 默认为1秒, 可以设置为-1表示禁用刷新。
如果显示不设置该值,那些在至少${index.search.idle.after}秒之前没有收到过搜索请求的分片,将不会收到后台的刷新请求,一直要等这些分片收到搜索才会收到后台的刷新请求,如果当前搜索涉及到操作空闲状态的分片时,刷新操作会被挂起直到下一次后台的刷新操作(1秒之内),此行为旨在在未执行搜索时自动优化默认情况下的批量索引。
如果不希望执行此默认逻辑,应当显示的将刷新时间间隔设置为1秒。
index.max_result_window
对当前索引在被执行搜索时,限制此索引的from + size的最大值,以避免占用过大的堆内存, 默认为10000。
index.max_inner_result_window
用于控制顶部聚合from+size的总记录,以避免占用过大的堆内存, 默认为100。
index.max_rescore_window
设置索引的rescore请求的window_size的最大值, 默认为与index.max_result_window的值相同,默认值为10000。
index.max_docvalue_fields_search
查询中允许的最多docvalue_fields数量,默认为100。Doc_value字段的查询成本很高,因为它们可能会导致对每个字段和每个文档执行搜索。
index.max_script_fields
查询中允许的最多script_fields的数量, 默认为32。
index.max_ngram_diff
NGramTokenizer和NGramTokenFilter的min_gram和max_gram之间允许的最大差异值,默认为1。
index.max_大气的仙人掌_diff
wzdl的max_大气的仙人掌_size和min_大气的仙人掌_size之间允许的最大差异值, 默认为3。
index.blocks.read_only
控制索引及其元数据是否为只读状态,设置为true表示只读,false为非只读。
index.blocks.read_only_allow_delete
控制索引及其元数据在只读状态下,是否允许执行删除,设置true表示允许删除,false不允许。
index.blocks.read
设置是否允许当前索引可读,true表示不可读。
index.blocks.write
设置是否允许当前索引可写,true表示不可写。与只读read_only不同的是,它不影响到对元数据的操作。例如可以关闭一个blocks.write的索引,但是不可以关闭一个read_only状态的索引。
index.blocks.metadata
控制对metadata的读写,true表示不允许读写。
index.max_refresh_listeners
索引的每个分片上可用的最大刷新侦听器数,这些侦听器用于实现refresh = wait_for的请求。
index.analyze.max_token_count
使用_analyze API可以生成的最大词项数, 默认为10000。
index.highlight.max_analyzed_offset
highlight请求可被分析的最大字符数,此设置仅在highlight请求针对没有偏移量或term vector的索引文本时才会生效, 默认为1000000。
index.max_terms_count
可在term查询中使用的最大term数,默认值为65536。
index.max_regex_length
可以在正则表达式查询中使用的正则表达式的最大长度, 默认为1000。
index.routing.allocation.enable
控制当前索引的分片分配,其值可以设置为:
all(默认值) - 允许所有分片执行分片分配;primaries - 仅允许为主分片分配分片;new_primaries - 仅允许为新创建的主分片分配分片;none - 不允许执行分片分配;index.routing.rebalance.enable
设置索引的分片重新平衡策略,其值可以设置为:
all(默认值) - 允许所有的分片重新平衡;primaries - 仅允许主分片重新平衡;replicas - 仅允许对副本分片进行重新平衡;none - 不允许进行分片重新平衡;index.gc_deletes
设置已删除文档的版本号仍可用于后续版本化操作的时间, 默认为60秒。
index.default_pipeline
设置此索引的默认接收节点管道(The default ingest node pipeline),如果设置了默认管道但管道不存在,此索引请求将失败。可以使用pipeline参数覆盖默认值,名为“_none”的特殊pipeline不执行摄取管道。
常用配置参看:
https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html
2.3、恢复索引项的默认配置
在Elasticsearch中,基本上所有的参数都有默认值,如果由于某种原因需要恢复指定参数为原来的默认值,如将number_of_replicas的值恢复为默认值,则只需要将对应参数的值设置为null即可,操作如下:
PUT /new_index/_settings { "index" : { "number_of_replicas" : null } }