Elasticsearch - 模块

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) 这是应执行的操作的最小优化值。

基于磁盘的分片分配

默认 85%)
设置 可能的值 描述
cluster.routing.allocation.disk.threshold_enabled 布尔值(默认为 true) 这将启用和禁用磁盘分配决策器。
cluster.routing.allocation.disk.watermark.low 字符串值(默认为 true) cluster.routing.allocation.disk.watermark.low 字符串值(默认为 true) cluster.routing.allocation.disk.watermark.low 这表示磁盘的最大使用率;在此点之后,不能将任何其他分片分配给该磁盘。
cluster.routing.allocation.disk.watermark.high 字符串值(默认 90%) 这表示分配时的最大使用率;如果在分配时达到此点,则 Elasticsearch 会将该分片分配给另一个磁盘。
cluster.info.update.interval 字符串值(默认为 30 秒) 这是检查磁盘使用情况的间隔。
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 中配置)−

S.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 请求中内容的最大大小。其默认值为 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%。

字段数据缓存

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

节点查询缓存

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

索引缓冲区

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

分片请求缓存

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

禁用缓存 - ?request_cache = true
启用缓存"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 表示该节点不是数据节点。