config


Elasticsearch由多个模块组成,这些模块负责其功能。 这些模块有以下两种类型的设置 -



静态设置 - 在启动Elasticsearch之前,需要在配置文件(elasticsearch.yml)中配置这些设置。需要更新集群中的所有关注节点以反映这些设置的更改。



动态设置 - 这些设置可以在实时Elasticsearch上设置。



我们将在本章的以下部分讨论Elasticsearch中的每个模块。



集群级路由和碎片分配
集群级别设置决定将碎片分配给不同节点,以及将碎片重新分配给平衡集群。这些是以下设置来控制碎片分配 -



集群级碎片分配-



cluster.routing.allocation.enable 可能的值及说明 -



all - 此默认值允许为所有种类的碎片分配碎片。
primaries - 这允许只为主碎片分配碎片。
new_primaries- 这允许只为新索引的主碎片分配碎片。
none- 这不允许任何碎片分配。
cluster.routing.allocation.node_concurrent_recoveries - 一个数字值(默认为2 ),它限制了并发碎片恢复的数量。



cluster.routing.allocation.node_initial_primaries_recoveries - 一个数字值(默认为 4 ),它限制了并行初始初级恢复的数量。



cluster.routing.allocation.same_shard.host - 布尔值(默认为false), 它限制了同一物理节点中同一碎片的多个副本的分配。



indices.recovery.concurrent _streams - 一个数字值(默认为3 ),它控制在从对等体碎片恢复碎片时每个节点的开放网络流的数量。



indices.recovery.concurrent_small_file_streams - 一个数字值(默认为2 ),这控制了在碎片恢复时对于小于5mb的小文件的每个节点的开放流的数量。



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 ), 这限制了集群中的并发碎片平衡数。



cluster.routing.allocation.balance.shard - 一个浮点数值(默认为0.45f ),这定义了在每个节点上分配的碎片的权重因子。



cluster.routing.allocation.balance.index - 一个浮点数值(默认为0.55f ),这定义了在特定节点上分配的每个索引的碎片数量的比率。



cluster.routing.allocation.balance.threshold - 一个浮点数值(默认为1.0f ),这定义了在特定节点上分配的每个索引的碎片数量的比率。



cluster.routing.allocation .balance.threshold - 非负浮点值(默认为1.0f)这是应该执行的操作的最小优化值。



基于磁盘的碎片分配
设置 可能的值 描述
cluster.routing.allocation.disk.threshold_enabled 布尔值(默认为true) 这启用和禁用磁盘分配决策程序。
cluster.routing.allocation.disk.watermark.low 字符串值(默认为85%) 这表示磁盘的最大使用; 此后,无法将其他碎片分配给该磁盘。
cluster.routing.allocation.disk.watermark.high 字符串值(默认为90%) 这表示分配时的最大使用量; 如果在分配时达到这一点,Elasticsearch将把该碎片分配给另一个磁盘。
cluster.info.update.interval 字符串值(默认30s) 这是磁盘用法,检查两个时间之间的间隔。
cluster.routing.allocation.disk.include_relocations 布尔值(默认为true) 这决定在计算磁盘使用率时是否考虑当前分配的分片。
发现
此模块帮助集群发现和维护其中的所有节点的状态。在从集群添加或删除节点时集群的状态发生更改。集群名称设置用于在不同集群之间创建逻辑差异。有一些模块,可以帮助您使用云供应商提供的API -



Azure发现
EC2发现
Google计算引擎发现
Zen发现
网关
此模块在整个群集重新启动时维护群集状态和分片数据。以下是此模块的静态设置 -



设置 可能的值 描述
gateway.expected_nodes 数值(默认为0) 预期在群集中用于恢复本地碎片的节点数。
gateway.expected_master_nodes 数值(默认为0) 在开始恢复之前预期在群集中的主节点数。
gateway.expected_data_nodes 数值(默认为0) 开始恢复之前群集中预期的数据节点数。
gateway.recover_after_time 字符串值(默认为5m) 这用于指定恢复进程将等待启动的时间,而不考虑在集群中加入的节点数。1. gateway.recover_after_nodes 2. gateway.recover_after_master_nodes 3. gateway.recover_after_data_nodes
HTTP
此模块管理HTTP客户端和Elasticsearch API之间的通信。可以通过将http.enabled的值更改为false来禁用此模块。 以下是控制此模块的设置(在elasticsearch.yml中配置)



编号 设置 描述
1 http.port 访问Elasticsearch的端口,范围为9200-9300。
2 http.publish_port 此端口用于HTTP客户端,并且在防火墙的情况下也很有用。
3 http.bind_host http服务的主机地址。
4 http.publish_host http客户端的主机地址。
5 http.max_content_length 这是http请求中内容的最大值。其默认值为100mb。
6 http.max_initial_line_length 这是URL的最大值,其默认值为4kb。
7 http.max_header_size 这是最大http报头大小,其默认值为8kb。
8 http.compression 这启用或禁用对压缩的支持,其默认值为false。
9 http.pipelinig 这将启用或禁用HTTP通道线。
10 http.pipelining.max_events 这会限制在关闭HTTP请求之前排队的事件数。
索引



此模块维护对每个索引全局设置的设置。以下设置主要与内存使用有关 -



断路器
这用于防止操作引起OutOfMemroyError。 该设置主要限制JVM堆大小。 例如,indices.breaker.total.limit设置,JVM堆的默认为70%。



Fielddata缓存
这主要用于在字段上聚合时。建议分配它足够的内存。 可以使用indices.fielddata.cache.size设置控制用于字段数据高速缓存的内存量。



节点查询缓存
此内存用于缓存查询结果。此缓存使用最近最少使用(LRU)逐出策略。 Indices.queries.cahce.size设置控制此缓存的内存大小。



索引缓冲区
此缓冲区将新创建的文档存储在索引中,并在缓冲区已满时将其刷新。设置为indices.memory.index_buffer_size控制为此缓冲区分配的堆的大小。



Shard请求缓存
此缓存用于存储每个分片的本地搜索数据。缓存可以在创建索引期间启用,也可以通过发送URL参数来禁用。



Disable cache - ?request_cache = true
Enable cache “index.requests.cache.enable”: true
索引恢复
它在恢复过程中控制资源。以下是一些设置 -



设置 默认值
indices.recovery.concurrent_streams 3
indices.recovery.concurrent_small_file_streams 2
indices.recovery.file_chunk_size 512kb
indices.recovery.translog_ops 1000
indices.recovery.translog_size 512kb
indices.recovery.compress true
indices.recovery.max_bytes_per_sec 40mb
TTL间隔
生存时间(TTL)间隔定义文档的时间,之后文档将被删除。 以下是控制此过程的动态设置 -



设置 默认值
indices.ttl.interval 60
indices.ttl.bulk_size 1000
节点
每个节点有一个选项是否是数据节点。可以通过更改node.data设置更改此属性。将值设置为false将定义该节点不是数据节点。


Category elasticsearch