Elasticsearch 模块

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)

这限制了在同一物理节点中分配同一分片的多个副本。

index.recovery.concurrent _streams数值(默认为3)

这控制从对等碎片恢复碎片时每个节点打开的网络流的数量。

index.recovery.concurrent _small_file_streams数值(默认为2)

这可以控制碎片恢复时大小小于5mb的小文件在每个节点上打开的流的数量。

cluster.routing.rebalance.enable

all

此默认值允许平衡所有类型的碎片。

primaries

这只允许主碎片进行碎片平衡。

replicas

这只允许对副本碎片进行碎片平衡。

none

这不允许任何形式的碎片平衡。

cluster.routing.allocation .allow_rebalance

always

此默认值始终允许重新平衡。

indexs_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发现

网关

该模块在整个集群重新启动时维护集群状态和分片数据。以下是该模块的静态设置-

设置可能的值描述
gateway.expected_nodes

数值(默认为0)

群集中用于恢复本地分片的节点数。
gateway.expected_master_nodes

数值(默认为0)

开始恢复之前,预期在群集中的主节点数。
gateway.expected_data_nodes

数值(默认为0)

开始恢复之前,群集中预期的数据节点数。
gateway.recover_after_time

字符串值(默认为5m)

这是两次磁盘使用情况检查之间的间隔。
cluster.routing.allocation. disk.include_relocations

布尔值(默认为true)

这指定了恢复过程将等待开始的时间,而不管群集中加入的节点数量如何。

gateway.recover_ after_nodes
gateway.recover_after_master_nodes
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堆大小。例如,indexs.breaker.total.limit设置,默认为JVM堆的70%。

现场数据缓存

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

节点查询缓存

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

索引缓冲区

该缓冲区将新创建的文档存储在索引中,并在缓冲区已满时刷新它们。像indexs.memory.index_buffer_size这样的设置控制为此缓冲区分配的堆数量。

分片请求缓存

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

Disable cache - ?request_cache = true
Enable cache "index.requests.cache.enable": true

索引恢复

它在恢复过程中控制资源。以下是设置-

设置默认值
indices.recovery.concurrent_streams3
indices.recovery.concurrent_small_file_streams2
indices.recovery.file_chunk_size512kb
indices.recovery.translog_ops1000
indices.recovery.translog_size512kb
indices.recovery.compresstrue
indices.recovery.max_bytes_per_sec40mb

TTL间隔

生存时间(TTL)间隔定义了文档的时间,之后该文档将被删除。以下是用于控制此过程的动态设置-

设置默认值
indices.ttl.interval60s
indices.ttl.bulk_size1000

节点

每个节点都可以选择是否为数据节点。可以通过更改 node.data 设置来更改此属性。将该值设置为 false 将定义该节点不是数据节点。