Elasticsearch由许多模块组成,这些模块负责其功能.这些模块有以下两种类型的设置和减号;
静态设置 : 在启动Elasticsearch之前,需要在config(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) | 这限制了在同一物理节点中分配同一个分片的多个副本. |
数值(默认为3) | 这可以控制从对等分片恢复分片时每个节点的开放网络流数. | |
indices.recovery.concurrent _small_file_streams | 数值(默认为2) | 这可以控制碎片恢复时大小小于5mb的小文件的每个节点的开放流数. |
cluster.routing.rebalance.enable | ||
all | 此默认值允许平衡各种分片. | |
primaries | 这允许仅对主分片进行分片平衡. | |
replicas | 这允许仅对副本分片进行分片平衡. | |
none | 这不允许任何类型的分片平衡. | |
cluster.routing.allocation .allow_rebalance | ||
总是 | 此默认值始终允许重新平衡. | |
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 .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 discovery
网关
此模块在整个群集重新启动时维护群集状态和分片数据.以下是静态集这个模块的版本 :
设置 | 可能的值 | 描述 |
---|---|---|
gateway.expected_ nodes | 数值(默认情况下为0) | 预期在群集中用于恢复本地分片的节点数. |
gateway.expected_ master_nodes | 数值(默认情况下为0) | 开始恢复之前预期在集群中的主节点数. |
gateway.expected_ data_nodes | 数值(默认情况下为0) | 开始恢复之前集群中预期的数据节点数. |
gateway.recover_ after_time | 字符串值(默认为5m) | 这指定恢复进程等待启动的时间,无论加入的节点数是多少集群.
|
HTTP
此模块管理HTTP客户端和Elasticsearch API之间的通信.可以通过将http.enabled的值更改为false来禁用此模块.以下是控制此模块的设置(在elasticsearch.yml中配置) :
Sr.No | 设置&描述 |
---|---|
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 reque中内容的最大大小ST.它的默认值是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 .嘛x_events 这会限制在关闭HTTP请求之前排队的事件数. |
指数
此模块维护设置,这些设置是为每个索引全局设置的.以下设置主要与内存使用量和减号有关;
断路器
这用于防止操作导致OutOfMemroyError.该设置主要限制JVM堆大小.例如,indices.breaker.total.limit设置,默认为JVM堆的70%.
Fielddata Cache
这主要用于聚集在一个字段上.建议有足够的内存来分配它.可以使用indices.fielddata.cache.size设置来控制用于字段数据高速缓存的内存量.
节点查询高速缓存
此内存用于缓存查询结果.此缓存使用最近最少使用(LRU)驱逐策略. Indices.queries.cahce.size设置控制此缓存的内存大小.
索引缓冲区
此缓冲区将新创建的文档存储在索引中并在缓冲区已满时刷新它们.像indices.memory.index_buffer_size这样的设置控制为此缓冲区分配的堆的数量.
碎片请求缓存
此缓存用于存储本地搜索每个碎片的数据.可以在创建索引期间启用缓存,也可以通过发送URL参数禁用缓存.
Disable cache - ?request_cache = trueEnable 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 | 60s |
indices.ttl.bulk_size | 1000 |
节点
每个节点都有一个数据节点选项.您可以通过更改 node.data 设置来更改此属性.将值设置为 false 可定义该节点不是数据节点.