返回介绍

Elasticsearch 模块

发布于 2024-06-23 18:57:05 字数 6398 浏览 0 评论 0 收藏 0

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中配置)

编号设置描述
1http.port访问Elasticsearch的端口,范围为9200-9300。
2http.publish_port此端口用于HTTP客户端,并且在防火墙的情况下也很有用。
3http.bind_hosthttp服务的主机地址。
4http.publish_hosthttp客户端的主机地址。
5http.max_content_length这是http请求中内容的最大值。其默认值为100mb。
6http.max_initial_line_length这是URL的最大值,其默认值为4kb。
7http.max_header_size这是最大http报头大小,其默认值为8kb。
8http.compression这启用或禁用对压缩的支持,其默认值为false。
9http.pipelinig这将启用或禁用HTTP通道线。
10http.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参数来禁用。

  1. Disable cache - ?request_cache = true
  2. 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.interval60
indices.ttl.bulk_size1000

节点

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文