elasticsearch一些重要的配置参数
先看一下官网给我们提供的全部的参数配置项
官网地址
官方文档链接:注意版本是8.1Configuring Elasticsearch | Elasticsearch Guide [8.1] | Elastic编辑https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html

![]()

![]()
重要(基本)参数
Important Elasticsearch configuration
关于分片和路由的配置
Cluster-level shard allocation and routing settings
分片的配置,用于集群重启时候的分片恢复、副本分配问题、分片平衡问题、以及删除节点的时候触发生效。
master节点负责分片分配的相关问题:包括了分片去哪个节点,以及节点之间的分片平衡(当一个节点上的数据过多,与其它节点分配不均匀的时候,master节点负责重新平衡)。
分片分配相关参数
参数:cluster.routing.allocation.enable
-
cluster.routing.allocation.enable用来限制不同的分片能否在某个节点上分配:
all- (默认)允许分配所有类型的分片。primaries- 只允许分配主分片。new_primaries- 仅允许新索引的主分片分配。none- 不允许对任何索引进行任何类型的分片分配。该设置不影响重启节点时本地主分片的恢复。具有未分配主分片副本的重新启动节点将立即恢复该主分片,假设其分配 id 与集群状态中的活动分配 id 之一匹配。这里的优化点,我们可以靠谱的机器分配主分片。可能有问题的机器,可以限制主分片的分配。
-
cluster.routing.allocation.node_concurrent_incoming_recoveries副本在当前节点分配的并发数。比方说,你的索引只有主分片,没有副本。你想要添加副本,则你就要在别的机器上去分配副本。
默认值为:2
增大该配置,可以提升添加副本的速度。但是它意味着花费更多的资源。假如你不考虑集群当前服务能力,就想快速添加副本,则可以增大该配置。具体的可以增加到多大。需要做压力测试。根据不同的机器资源,有不同的效果。
-
cluster.routing.allocation.node_concurrent_outgoing_recoveries最大允许同时多少个分片去别的机器上恢复。
默认值为:2
增大该配置,可以提升添加副本的速度。但是它意味着花费更多的资源。假如你不考虑集群当前服务能力,就想快速添加副本,则可以增大该配置。具体的可以增加到多大。需要做压力测试。根据不同的机器资源,有不同的效果。
-
cluster.routing.allocation.node_concurrent_recoveries该参数合并了
cluster.routing.allocation.node_concurrent_incoming_recoveries和cluster.routing.allocation.node_concurrent_outgoing_recoveries这两个参数。意思是只配置当前这个参数,以上两个参数都会生效。 -
cluster.routing.allocation.node_initial_primaries_recoveries当节点重启后,或者说集群重启后,主分片恢复的并发数。假如一个节点上有20个主分片。那么,如果默认4个并发,则需要分五次,才能把这个主分片全部恢复起来。或者说同时只能有四个主分片一起恢复。
默认值为:4
这个参数可以用来提升集群故障重启后的集群恢复速度。我们可以适当增大它。能够增大多少,也是需要具体的压力测试。根据机器资源不同,可增大就不同。
目前我认为这个参数是和CPU能力挂钩的。
另外我认为:集群恢复,我能可以调大它。不用考虑此时集群服务能力。说白了,主分片如果都没回复全,肯定对外提供查询,它是有问题的。
注意一点,所谓的参数调优,每个参数都不是孤立的,它要和其它参数一起配合来使用。
-
cluster.routing.allocation.same_shard.host这个参数只会在一台物理机器上多个节点的时候才会有用。
默认配置:false
cluster.routing.allocation.same_shard.host: true 禁止把副本分配到同一台物理机器上(相同ip地址认为是同一台机器)cluster.routing.allocation.same_shard.host: false 可以把副本分配到同一台物理机器上。如果一台物理机器只有一个节点,默认为false也没什么问题,因为副本不会分配到同一个机器上。但是一台机器上有多个节点,就失去数据容灾的能力了,也不能将请求均分到其它机器上去。
分片平衡配置
分片平衡问题,对于es集群来说,它其实是希望数据能按大小均匀分不到不同的节点上的。当发生数据倾斜的时候,集群会有一个自动的平衡机制,帮你把分片挪到别的节点上。
这里有一个点,就是我们在组建集群的时候,最好能够将每台机器,或者说每个节点,能用的磁盘空间对齐。避免节外生枝。
cluster.routing.rebalance.enable
设置哪些分片能够重新平衡:
-
all- (默认)允许对所有类型的分片进行分片平衡。 -
primaries- 仅允许对主分片进行分片平衡。 -
replicas- 仅允许对副本分片进行分片平衡。 -
none- 任何索引都不允许任何类型的分片平衡。
cluster.routing.allocation.allow_rebalance
指定何时允许分片重新平衡:
-
always- 始终允许重新平衡。 -
indices_primaries_active- 仅当分配了集群中的所有主节点时。 -
indices_all_active- (默认)仅当集群中的所有分片(主分片和副本)都已分配时。这个阶段显然是最安全的。不要掺和太多事,等集群稳定的时候去平衡。
cluster.routing.allocation.cluster_concurrent_rebalance
设置集群中,执行分片重新平衡的并发数。默认值为2的情况下,一个集群中最多能有2个分片同时去执行重新平衡。
默认值:2
分片平衡规则设置
上边只提到了。集群会自动平衡节点中的分片。那策策略是什么呢?或者说规则是什么呢?
cluster.routing.allocation.balance.shard
(动态)定义节点上分配的分片总数的权重因子(浮点数)。默认为0.45f. 提高这一点会增加集群中所有节点上的分片数量相等的趋势。
从这里我们可以知道,es只能保证分片数量平衡。
那么再提出来一个问题:假如分片的大小并不平衡呢?
cluster.routing.allocation.balance.index
(动态)定义分配在特定节点(浮点数)上的每个索引的分片数的权重因子。默认为0.55f. 提高这一点会增加集群中所有节点上每个索引的分片数量相等的趋势。
cluster.routing.allocation.balance.threshold
(动态)应该执行的操作的最小优化值(非负浮点)。默认为1.0f. 提高此值将导致集群在优化分片平衡方面不那么积极。
与磁盘相关的分片设置
关于磁盘的保护。我们很容易就可以理解,我们的磁盘总不能写满吧?es集群给我们增加了这个控制。特地设置了三个水位线,一个最低水位线,一个控制水位线,一个最高水位线。看下图三条线。这个水位线是说磁盘使用量占比。

当磁盘空间倾斜的时候,es需要自动调整。假如我们物理节点的磁盘大小不一致。节点A分配1T磁盘,节点B分配10T磁盘,如果同样是每个上边分配相同的分片。同样都写入数据,显然A节点先到达最低水位线。
所以磁盘有一个限制。当写入磁盘到达橙色低水位线的时候,副本将无法再在这个节点上分配。
当到达控制水位线,就会进入一个挪分片阶段。这个阶段会把分片挪到别的节点上去,以达到磁盘平衡的目的。
当所有的节点都达到了控制水位线的时候,就不能再挪分片了,分片也没有地方去了。此时还能继续写入数据,当写入直到最高水位线的时候,不行了,集群不再接受写入请求了!此时能读,能删除。
这里有一个集群规划-磁盘规划方面的优化点。
我们知道这个挪分片的过程,数据不会自己从一个磁盘飞到另外的磁盘。它是要花资源的,占用CPU,占用磁盘IO,占用网络IO。
所以我们要尽可能的分配均匀的磁盘给每个节点。尽可能的避免这个挪的过程,从而避免资源占用。
另外如何磁盘大小不一样。我们通过上边的参数知道,它是按比例来算的。也就是有可能在极端情况下:假如三个节点,磁盘分别是 1T,10T,10T。假如数据都装85%,这意味着,一次搜索,一个节点处理850G数据,另外两个节点每个处理8.5T。这相当于只有两个节点在工作。从而失去了集群的意义。
可以使用以下设置来控制基于磁盘的分配:
cluster.routing.allocation.disk.threshold_enabled
(动态)默认为true。设置为false禁用磁盘分配决定器。
cluster.routing.allocation.disk.watermark.low
(动态)控制磁盘使用的低水位线。默认为85%,这意味着 Elasticsearch 不会将分片分配给磁盘使用率超过 85% 的节点。它也可以设置为绝对字节值(如500mb),以防止 Elasticsearch 在可用空间少于指定数量时分配分片。此设置对新创建索引的主分片没有影响,但会阻止分配它们的副本。
cluster.routing.allocation.disk.watermark.high
(动态)控制水位线。它默认为90%,这意味着 Elasticsearch 将尝试将分片从磁盘使用率高于 90% 的节点,开始挪分片去其他节点。
cluster.routing.allocation.disk.watermark.flood_stage
(动态)高水位线,默认为 95%。index.blocks.read_only_allow_deleteElasticsearch对在节点上分配了一个或多个分片并且至少有一个磁盘超过洪水阶段的每个索引强制执行只读索引块 ( )。此设置是防止节点耗尽磁盘空间的最后手段。当磁盘利用率低于高水位线时,索引块会自动释放。
注意以上配置需要对齐,要么都用百分比,要么都指定具体大小。
cluster.info.update.interval
(动态)Elasticsearch 应该多久检查一次集群中每个节点的磁盘使用情况。默认为30s.
以下两个参数没看懂:等看懂了再来补。
cluster.routing.allocation.disk.watermark.flood_stage.frozen(Dynamic) Controls the flood stage watermark for dedicated frozen nodes, which defaults to 95%.
cluster.routing.allocation.disk.watermark.flood_stage.frozen.max_headroom(Dynamic) Controls the max headroom for the flood stage watermark for dedicated frozen nodes. Defaults to 20GB when
cluster.routing.allocation.disk.watermark.flood_stage.frozenis not explicitly set. This caps the amount of free space required on dedicated frozen nodes.
search相关设置
限制搜索条件包含的搜索子句
参数: indices.query.bool.max_clause_count
默认值:4096
这个默认配置是偏大的。这个我们可以调小。用来对集群的保护。
聚类结果数(桶的个数,例如你去 agg terms,获取聚类结果)
参数: search.max_buckets
默认是:65536
这里建议聚类结果,不要一下子返回,通常情况,可以利用 compsit滚动导出聚类结果。
这个不难理解,比方说你一共有100亿数据,让你一下子从集群中拿出20亿。这也不现实,集群做不到这件事,肯定要滚动利用游标的方式导出。
嵌套查询的层数
就是嵌套查询最多有几层
参数: indices.query.bool.max_nested_depth
默认值:20
index相关配置
是否允许自动创建索引
参数: action.auto_create_index
默认值:true
删除索引是否要指定索引名称
参数: action.destructive_requires_name
默认值:false,如果设置为true,则不能通过通配符来删除索引。
是否允许关闭索引
参数: cluster.indices.close.enable
默认值:true。如果设置为false,则不能关闭索引。
关闭索引,会释放内存空间,但是不会释放磁盘空间。
跨集群数据同步白名单
由 ip:port字符串数组组成
参数: reindex.remote.whitelist
例如: reindex.remote.whitelist : ["10.10.10.10:9200", "10.10.10.11.9200:*"]
是否启用内置索引和组件模板
参数:stack.templates.enabled
默认为true,如果为false,则es不会自动为你创建以下这些索引。
此设置影响以下内置索引模板:
-
logs-*-* -
metrics-*-* -
synthetics-*-*
此设置还会影响以下内置组件模板:
-
logs-mappings -
logs-settings -
metrics-mappings -
metrics-settings -
synthetics-mapping -
synthetics-settings
控制集群是否能写入数据
控制集群只读: cluster.blocks.read_only
控制集群可读可以删除: cluster.blocks.read_only_allow_delete
集群分片数设置
限制单个节点最大的分片数:cluster.max_shards_per_node
默认值:1000
所以集群的总的主分片和副本分片总数为 cluster.max_shards_per_node * 数据节点的个数
如果索引被关闭,则其分片数不计数。
这个很多人给的建议是:每1G堆内存,对应20个分片。假如你给堆分配30G堆内存,则该节点分片数最好不要超过600个。这个默认是每个节点1000个,调优的时候通常是降低这个默认值,而不是增大它。
限制单个节点上存在冻结的分片: cluster.max_shards_per_node.frozen
向理解以下什么冻结的分片,换句话说,就是关闭的分片。比如一个,索引有十个分片,一共两个节点,假如每个节点5个分片,将索引close掉,那么这5个分片就算是冻结分片。如果还不懂,看下边这篇文章。
关于什么是冻结索引?
ES冻结索引_51CTO博客_es冻结索引 占多少内存
Field data cache 设置
参数: indices.fielddata.cache.size
取值:可以是百分比,例如: 20% 。也可以制定是 5GB。
注意熔断器中也有参数限制Field data cache 的大小。并且默认值是 40%。所以如何设置这个参数的时候要比40%小。
关于Field data cache,请看下边的这篇文章:
elasticsearch中 fieldData_elasticsearch fielddata_水的精神的博客-CSDN博客
永远不要尝试打开它。它是性能的杀手。我们不要对text类型的字段排序,聚类!如果真的需要,就同时给它设置一个keyword类型,利用doc values,而不是构造Field data!
index buffer cache
用作写缓存。分配的是堆空间。
indices.memory.index_buffer_size
接受百分比或字节大小值。它默认为10%,这意味着10%分配给节点的总堆将用作所有分片共享的索引缓冲区大小。
indices.memory.min_index_buffer_size
如果index_buffer_size指定为百分比,则此设置可用于指定绝对最小值。默认为48mb.
indices.memory.max_index_buffer_size
如果index_buffer_size指定为百分比,则此设置可用于指定绝对最大值。默认为无界。
Node query cache
节点级别的缓存。
es节点可以缓存查询的结果。
参数: index.queries.cache.enabled 是否开启节点请求结果缓存。
默认值:true。代表节点默认是会缓存查询数据的。
默认情况下,缓存最多可容纳 10000 个查询 。段合并会导致缓存失效!
参数: indices.queries.cache.size 节点分配个查询缓存的堆大小。
默认值:10%。 也就是说有百分之十的堆空间,用于节点的请求缓存。
它是LRU的策略来进行替换的。但是不会被GC回收掉!
Shard requests cache
分片级别的缓存。
通常情况下缓存 查询结果为0的数据。例如: aggregations, andsuggestions.
为了保证搜索的实时性和搜索结果的最终一致性。分片级别的缓存,会在执行 refreshe 的时候失效。
所以说,分片级别的缓存生效的时间,取决于 refreshe的时间间隔。缓存和实时性,是不可兼得的一件事请!
参数:index.requests.cache.enable 是否开启分片级别的缓存。
默认值:true。开启
另外我们可以在一次请求的时候指定是否缓存本次结果在分片上。
GET /my-index-000001/_search?request_cache=true
{"size": 0,"aggs": {"popular_colors": {"terms": {"field": "colors"}}}
}
参数:indices.requests.cache.size 分片缓存占用堆内存的大小
默认值:1%
快照与恢复配置
快照操作的最大并发数。操作包括快照创建,删除和复制。
参数: snapshot.max_concurrent_operations
默认值:1000
快照生命周期管理配置
是否把记录快照历史操作
参数: slm.history_index_enabled
默认值:true
快照的执行周期
参数: slm.retention_schedule
可以是 cron表达式: 0 30 1 * * ?
多长时间删除快照
参数: slm.retention_duration
默认值:1小时
允许用来快照恢复的url
参数:repositories.url.allowed_urls
线程池相关设置
通常情况下,我们对es集群下发的命令,例如search、index、agg、suggest,段合并,等等。都交由不同的线程池来完成执行。这个其实不难理解,线程是任务调度的最小单元。对es来说也是。
先来聊一聊物理机器的CPU
一个物理节点对应一个es节点,是理想情况。es会自动检测CPU的个数,这并不难。但是如果一台机器有多个节点,就有问题了。因为es没有那么智能,它会傻傻的以为,当前的CPU都是给自己一个节点用的。这种情况下,会很大程度上降低es的性能。
假如一台机器上有多个节点,请告诉node,它该分几个核心!
以下参数可以设置CPU核心数。假如一台机器,总的核心数是32,假如你的机器上分配了两个节点,你可以设置为16,此时每个节点正好分配16个核心。 16核心是一个节点的理想核心数!
node.processors: 2
再聊一下线程池!如果熟悉线程池原理,应该知道,线程池可以有固定线程数的线程池,也有弹性的线程池。提交的任务会优先给线程处理,如果处理不过来,自然要把这些任务放在任务队列里。如果任务队列还满的话,那自然要触发拒绝策略了。
在看es 线程池相关的配置参数的时候,我们主要关注,线程池的功能,线程池是否是固定线程数,以及其任务队列的大小。
generic线程池
参数:generic
用于集群运行的幕后工作者,例如:用于节点的发现。
用于search的线程池
参数:search
例如: count、search、suggest
固定线程数:(CPU核心数 * 3 / 2 + 1)
任务队列:1000
下边这个我不太懂
search_throttled
For count/search/suggest/get operations on search_throttled indices. Thread pool type is fixed with a size of 1, and queue_size of 100.
search_coordination
For lightweight search-related coordination operations. Thread pool type is fixed with a size of a max of min(5, (# of allocated processors) / 2), and queue_size of 1000.
get
For get operations
固定线程数:CPU核心数
任务队列:1000
analyze
用于获取语句的执行过程。
固定线程数:1个线程
任务队列大小:16
write
写操作:写、删除、更新、批量提交操作
固定线程数:CPU核心数 + 1
任务队列大小:10000
snapshot
For snapshot/restore operations. Thread pool type is scaling with a keep-alive of 5m and a max of min(5, (# of allocated processors) / 2).
生成快照数据。
线程数:min(5, (CPU核心数 + 1) / 2) 也就是,最多5个线程。
snapshot_meta
读取快照数据,用来恢复。
线程数:min(50, (CPU核心数* 3)).
warmer
用于段数据预热
线程数:min(5, (CPU核心数) / 2).
refresh
将数据从JVM堆内存,刷新到文件系统,生成段。
线程数:min(10, (CPU核心数) / 2).
fetch_shard_started
获取分片状态信息.
线程数:最大为 CPU核心数*2
fetch_shard_store
获取分片列表.
线程数:最大为 CPU核心数*2
flush
用于操作文件系统上的段数据(refresh之后的阶段),从文件系统落到磁盘上。
线程数: min(5, (CPU核心数) / 2).
force_merge
段合并的线程数。默认为1个线程。
注意,这个参数不要随意调。比较致命。因为段合并是一个非常花费资源的操作。如果真的要调大,可以在凌晨来段合并。
management
用于集群管理
默认 5 个线程
system_read
系统索引的读.
线程数: min(5, (CPU核心数) / 2).
system_write
系统索引的写
线程数: min(5, (CPU核心数) / 2).
system_critical_read
For critical read operations on system indices.
线程数: min(5, (CPU核心数) / 2).
system_critical_write
For critical write operations on system indices.
线程数: min(5, (CPU核心数) / 2).
watcher
用于集群监控
线程数: min(5 * (CPU核心数), 50)
任务队列:1000
我们可以通过以下配置,来指定线程数。
thread_pool:# 指定线程池类型write:# 指定线程数size: 30# 指定任务队列大小queue_size: 1000
集群与注册相关配置
es有天然的集群自动组成方式。我们只需要简单的配置,节点就会自动组成集群。做分布式应用,es的集群策略是值得我们学习的!
一起看下和形成集群相关的参数配置
-
discovery.seed_hosts集群的节点列表(意思是指定哪些节点去进行通信,并形成集群)。
-
配置有两种形式:直接指定ip和端口号,多个用逗号分割。注意是ip:port的形式。如果不指定端口的话,默认是9300。9300是es节点间通信的端口。
-
如果地址是ipv4,举个栗子 ["10.10.10.10:9300", "10.10.10.11:9300"]
-
如果地址是ipv6,需要用中括号括起来。举个栗子 [ "10.10.10.10:9300", "[::1]:9300"]
-
-
也可以通过配置域名的方式。
举个栗子: seeds.mydomain.com
discovery.seed_hosts:- 192.168.1.10:9300- 192.168.1.11- seeds.mydomain.com- [0:0:0:0:0:ffff:c0a8:10c]:9301
-
-
discovery.seed_providers这个参数是用来指定读取集群列表的形式。默认情况下,我们是把地址放在了elasticsearch.yml下,从配置文件中修改。
但是假如我们集群的节点需要动态调整的话,不太方便。所以官方给我们提供了其它的形式。比如放在一个单独的文件,我们可以动态的去修改它。
下边的案例是我们指定配置的节点列表放在文件里。
discovery.seed_providers: file
然后我们在es的config目录下(和elasticsearch.yml同级的目录),创建一个名字为: unicast_hosts.txt 的文件,然后在文件中放入节点的列表:
10.10.10.5 10.10.10.6:9305 10.10.10.5:10005 # an IPv6 address 注意注释内容用 #开头 [2001:0db8:85a3:0000:0000:8a2e:0370:7334]:9301
-
discovery.type该参数指定了es节点是集群模式。默认是 multi-node 。也就是集群模式,它允许新的节点进来。
如果按照以下设置,则单个节点为一个集群。
discovery.type: single-node
-
cluster.initial_master_nodes该参数指定哪些节点可以作为master节点。注意这里指定的是节点的名称。
cluster.initial_master_nodes: - master-node-a- master-node-b- master-node-c
专家设置编辑
以下配置都是集群相关的配置,官方不建议修改。如果你熟悉它们,也可以修改!
-
discovery.cluster_formation_warning_timeout默认值 10s
假如 经过了 10s,节点还没有形成集群,会记录一条warn级别的日志,
discovery.cluster_formation_warning_timeout短语开头。master not discovered -
discovery.find_peers_interval默认为
1s.设置经过多长时间,进行一次集群发现。
-
discovery.probe.connect_timeout默认为
30s.设置尝试连接到每个地址时的等待时间。
-
discovery.probe.handshake_timeout默认为
30s.设置尝试通过握手识别远程节点时等待多长时间。
-
discovery.request_peers_timeout默认为
3s.设置节点在再次询问其对等方之后将等待多长时间,然后才认为请求失败。
-
discovery.find_peers_warning_timeout默认为
3m.设置节点在开始记录描述连接尝试失败原因的详细消息之前尝试发现其对等点的时间。
-
discovery.seed_resolver.max_concurrent_resolvers默认为
10.在节点发现时,节点列表中假如配置了域名的方式,进行DNS查询的并发数。
-
discovery.seed_resolver.timeout默认为
5s.在节点发现时,节点列表中假如配置了域名的方式,每次DNS获取地址的超时时间。
-
cluster.auto_shrink_voting_configuration该参数指定是否在投票中排除离开的节点。假如一共四个节点,一个节点的机器坏了,我们认为该节点离开了。
该参数默认为 true,代表会自动踢出离开的节点。前提是总的节点数大于等于3.
假如设置为false,则不会踢出离开的节点,需要我们通过api来手动踢出。 voting configuration exclusions API.
-
cluster.election.back_off_time默认为
100ms.选举失败时,等待的时间。
从默认值更改此设置可能会导致您的集群无法选择主节点。
-
cluster.election.duration默认为
500ms.设置在选举失败以后每次选举花费多长时间。
从默认值更改此设置可能会导致您的集群无法选择主节点。
-
cluster.election.initial_timeout这默认为
100ms.该参数指定在第一选举之前,或者选举失败以后,允许多长时间用来做节点的初始化工作。
从默认值更改此设置可能会导致您的集群无法选择主节点。
-
cluster.election.max_timeout设置节点在尝试第一次选举之前等待多长时间的最大上限,防止因为网络不稳定有太多的节点没有加入进来。这默认为
10s. 从默认值更改此设置可能会导致您的集群无法选择主节点。 -
cluster.fault_detection.follower_check.interval设置主节点检查从节点的等待时间。默认为
1s. 从默认值更改此设置可能会导致您的集群变得不稳定。 -
cluster.fault_detection.follower_check.timeout设置主节点多长时间可以认为从节点不在了。
默认为
10s. 从默认值更改此设置可能会导致您的集群变得不稳定。 -
cluster.fault_detection.follower_check.retry_count主节点检查从节点的次数,在失败多少次以后,可以认为该节点不在了。
默认为
3.从默认值更改此设置可能会导致您的集群变得不稳定。
-
cluster.fault_detection.leader_check.interval设置每个节点在选举前等待的时间。
默认为
1s.从默认值更改此设置可能会导致您的集群变得不稳定。
-
cluster.fault_detection.leader_check.timeout设置从节点判定主节点不在的时间.
默认为
10s.从默认值更改此设置可能会导致您的集群变得不稳定。
-
cluster.fault_detection.leader_check.retry_count设置从节点检查主节点是否存在的失败次数。
默认为
3. 超过三次以后则从节点可以认为主节点不在了。从默认值更改此设置可能会导致您的集群变得不稳定。
-
cluster.follower_lag.timeout集群状态在从节点更新的时间,默认是90s,如果集群状态在90s以后没有在从节点应用成功,则将该从节点从集群中移除。请参阅 发布集群状态。
-
cluster.max_voting_config_exclusions这个参数我暂时没明白是什么意思。
(Dynamic) Sets a limit on the number of voting configuration exclusions at any one time. The default value is
10. See Adding and removing nodes. -
cluster.publish.info_timeout默认值为
10s。主节点将集群状态应用在所有节点的时间。假如超过了默认值10s,则会记录一条日志。
-
cluster.publish.timeout设置主节点等待集群状态完全发布到所有节点的超时时间,除非
discovery.type设置为single-node。默认值为30s。请参阅发布集群状态。 -
cluster.no_master_block设置在没有master节点的时候不可以做的操作
此设置具有三个有效值:
-
all节点上的所有操作(读取和写入操作)都被拒绝。这也适用于 API 集群状态读取或写入操作,例如获取索引设置、更新映射和集群状态 API。 -
write拒绝写操作。 -
metadata_write只有元数据写入操作(例如映射更新、路由表更改)被拒绝,但常规索引操作继续工作。根据最后一个已知的集群配置,读取和写入操作成功。这种情况可能会导致部分读取过时数据,因为该节点可能与集群的其余部分隔离。该cluster.no_master_block设置不适用于基于节点的 API(例如,集群统计、节点信息和节点统计 API)。对这些 API 的请求不会被阻止,并且可以在任何可用节点上运行。要使集群完全运行,它必须有一个活动的主节点。
-
-
monitor.fs.health.enabled如果
true,节点运行定期 文件系统健康检查。默认为true. -
monitor.fs.health.refresh_interval每次文件系统检查的时间间隔 。默认为
2m. -
monitor.fs.health.slow_path_logging_threshold检查问阿金系统的时间超过该值,则 Elasticsearch 会记录警告日志。默认为
5s.
索引生命周期相关的配置
集群方面配置:
-
indices.lifecycle.history_index_enabled默认为: true
是否将 生命周期相关的操作记录到
ilm-history-*indices. -
indices.lifecycle.poll_interval默认:10m
多久检查一次索引生命周期的策略。我们是可以修改索引的生命周期相关的配置的。
索引层面的配置
-
index.lifecycle.indexing_complete是否滚动创建索引。
默认为
false. -
index.lifecycle.name用于管理索引的策略名称。有关 Elasticsearch 如何应用策略更改的信息,请参阅策略更新。
-
index.lifecyle.origination_date单位是long类型的时间戳
记录首次创建索引的间。该时间会被用来计算索引的年龄。可以不指定,如果不指定,则需要用下边的参数,并且创建的索引名称为指定格式。
-
index.lifecycle.parse_origination_date是否自动识别首次创建索引的时间。这个时间用来计算索引的年龄。
默认为true,当设置为true的时候,会自动从索引中通过名字识别首次创建索引的时间。前提是索引的名字为指定格式。索引名称必须与模式匹配
^.*-{date_format}-\\d+,其中date_formatisyyyy.MM.dd和尾随数字是可选的。翻转的索引通常会匹配完整格式,例如logs-2016.10.31-000002)。如果索引名称与模式不匹配,则索引创建失败。 -
index.lifecycle.step.wait_time_threshold在 ILM操作期间等待集群解决分配问题的时间 。必须大于
1h(1 小时)。默认为12h(12 小时)。请参阅分片分配 收缩。 -
index.lifecycle.rollover_alias使用生命周期滚动创建索引要更新的索引别名。
相关文章:
elasticsearch一些重要的配置参数
先看一下官网给我们提供的全部的参数配置项 官网地址 官方文档链接:注意版本是8.1Configuring Elasticsearch | Elasticsearch Guide [8.1] | Elastic编辑https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html 重要(基本…...
raft和zab算法的区别
首先,二者都是通过选举一个 Leader 来简化复杂度,后续的工作都是由 Leader 来做。 投票的时候,二者都需要定义一个轮次 Raft 定义了 term 来表示选举轮次 ZooKeeper 定义了 electionEpoch 来表示 同步数据的时候,都希望选举出来…...
Arthas生成火焰图命令报错汇总
操作步骤 1、在容器中集成了arthas诊断和调试工具,想生产火焰图,执行profiler start,报错 如下: [arthas1]$ profiler start AsyncProfiler error: Can not find libasyncProfiler so, please check the arthas directory. 2、…...
【PyQt学习篇 · ⑤】:QWidget - 鼠标操作
文章目录 鼠标形状设置常用鼠标形状设置自定义鼠标形状 重置形状获取鼠标鼠标跟踪鼠标跟踪案例 鼠标形状设置 常用鼠标形状设置 在PyQt中,QWidget类提供了设置鼠标形状的功能。可以使用setCursor()方法来更改QWidget及其子类的鼠标形状。该方法接受一个Qt.CursorS…...
2-多媒体数据压缩国际标准-Part3
文章目录 视频压缩的国际标准MPEG-1&MPEG-2/H.262视频标准MPEG-4 AVC/H.264视频标准H.264编码框架概述H.264视频编码的技术创新点 H.265/HEVC视频标准HEVC性能与编解码框架概述Quadtree-based coding structureDeblocking & SAO FilterHEVC各模块运算量 视频压缩的国际…...
使用Go模块进行依赖管理
摘要:本文将介绍Go语言中的模块(module)概念,以及如何使用Go模块进行依赖管理。我们会探讨模块的基本概念、使用方法、配置和依赖关系管理等方面的内容。 一、引言 Go语言自2007年发布以来,一直以其简洁、高效和强大…...
人工智能与航天技术的融合:未来发展的新趋势
人工智能与航天技术的融合:未来发展的新趋势 随着科技的飞速发展,人工智能和航天技术已经成为人类探索未知世界的重要工具。本文将探讨这两个领域的结合点,以及未来的发展趋势和应用前景。通过了解这些技术,读者将更好地理解人工…...
私有云:【11】win10安装Agent客户端组件
私有云:【11】win10安装Agent客户端组件 1、配置IP及加入域2、安装Agent客户端组件3、生成win10快照 1、配置IP及加入域 配置ip及dns 修改计算机名且加入域 进行验证 加入成功 将cloudadmin用户加入管理员组 输入cloudadmin户名密码验证 2、安装Agent客户端组件 …...
什么是程序化交易
大到量化、程序化、高频交易、套利交易、主观投资这些基本的概念,小到网格交易、条件单、T0、ETF套利、期现套利、算法拆单交易、打板策略等具体的投资方式。如果没有接触过这些,很容易混淆。 程序化交易: 指通过既定程序或特定软件…...
企业如何安全跨国传输30T文件数据
对于一些对数据敏感性比较高的企业,如IT企业和国企等,跨国数据传输是当今企业面临的一个重要挑战,尤其是当数据量达到30T这样的规模时,如何保证数据的速度、安全和合规性,就成为了企业必须考虑的问题。本文将从以下几个…...
【Linux】centos安装配置及远程连接工具的使用
🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《微信小程序开发实战》。🎯Ἲ…...
算法|每日一题|掷骰子等于目标和的方法数|动态规划
1155.掷骰子等于目标和的方法数 原题地址: 力扣每日一题:掷骰子等于目标和的方法数 这里有 n 个一样的骰子,每个骰子上都有 k 个面,分别标号为 1 到 k 。 给定三个整数 n , k 和 target ,返回可能的方式(从总共 kn 种…...
Java架构师软件工程全流程
目录 1 导学2 软件工程概述(原)3 能力成熟度模型4 软件过程模型5 逆向工程6 需求工程6.1 软件需求6.2 需求获取6.3 需求分析6.4 需求定义6.5 需求验证6.6 需求管理7 处理流程设计8 系统设计6.1 人机界面设计7 测试基础知识7.1 测试原则和方法7.2 测试阶段7.3 测试用例的设计7.4…...
深度学习中Transformer的简单理解
Transformer 网络结构 Transformer也是由编码器和解码器组成的。 每一层Encoder编码器都由很多层构成的,编码器内又是self-attention和前馈网络构成的。Self-attention是用来做加权平均,前馈网络用来组合。 但是decoder有点不同,多了一层En…...
Java架构师系统安全
目录 1 导学2 信息安全基础知识3 信息安全系统的组成框架4 信息安全技术4.1 加密技术4.2 对称加密技术4.3 非对称加密技术4.4 信息摘要4.5数字签名5 信息安全的抗攻击技术5.1 ARP欺骗的原理5.2 ARP欺骗的防范措施5.3 IP欺骗的原理和流程6 信息安全的保证体系和评估方法7 网络安…...
Stable Diffusion 图生图+ControlNet list index out of range
在webui1.5中用图生图ControlNet批量处理图片的时候报错: controlnet indexError: list index out of range 解决方法: 在controlNet的设置页中勾选不输出检测图即可。 参考:https://github.com/AUTOMATIC1111/stable-diffusion-webui/issu…...
SylixOS BSP开发(七)
实现系统调试信息打印接口 当系统出错时或者使用内核日志时会输出一些打印信息,这最终都是调用到bspLib.c中的bspDebugMsg 这个接口来实现的,所以我们在开发BSP时,第一个要做的工作就是实现这个接口。 一般的调试信息都是通过串口来输出的&am…...
多媒体应用设计师 第15章 多媒体素材的制作和集成
口诀 思维导图 2020...
CentOS和Ubuntu命令行方式配置静态IP
CentOS和Ubuntu都是通过修改相关配置文件来配置静态IP,但是他们的配置文件有所不同 CentOS CentOS需要修改的配置文件:/etc/sysconfig/network-scripts/ifcfg-需要修改的网卡名字 [rootbloke ~]# cd /etc/sysconfig/network-scripts/ [rootbloke netw…...
服务器快速申请免费SSL证书_2023年10月29日可用
目的 在服务器端通过命令快速申请免费域名的SSL证书.--2023年10月29日可用环境 Centos拥有域名 假设该域名为:demo.com Ubuntu 同样适用 步骤 下载组件 前期准备 CentOS服务器 yum update yum install socatUbuntu服务器 apt update apt install socat下载acme…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
