Elasticsearch 简明教程
Elasticsearch - Modules
Elasticsearch 由多个模块组成,这些模块负责其功能。这些模块有以下两种类型的设置:
-
Static Settings − 在启动 Elasticsearch 之前,需要在 config (elasticsearch.yml) 文件中配置这些设置。您需要更新集群中所有相关节点才能反映这些设置的更改。
-
Dynamic Settings − 可以在活动的 Elasticsearch 上设置这些设置。
我们将在本章的以下部分中讨论 Elasticsearch 的不同模块。
Cluster-Level Routing and Shard Allocation
集群级别设置决定将分片分配给不同的节点以及重新分配分片来重新平衡集群。以下这些设置控制分片分配。
Cluster-Level Shard Allocation
Setting |
Possible value |
Description |
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) |
Disk-based Shard Allocation
Setting |
Possible value |
Description |
cluster.routing.allocation.disk.threshold_enabled |
布尔值(默认值为真) |
这启用和禁止磁盘分配决策器。 |
cluster.routing.allocation.disk.watermark.low |
String value(by default 85%) |
这表示磁盘的最大使用量;在这一点之后,无法将任何其他切片分配到该磁盘。 |
cluster.routing.allocation.disk.watermark.high |
字符串值(默认值为 90%) |
这表示分配时的最大使用量;如果在分配时达到此点,则 Elasticsearch 将把该切片分配到另一个磁盘。 |
cluster.info.update.interval |
字符串值(默认值为 30 秒) |
这是磁盘使用量检查之间的间隔。 |
cluster.routing.allocation.disk.include_relocations |
布尔值(默认值为真) |
这决定了在计算磁盘使用量时是否考虑当前正在分配的切片。 |
Discovery
该模块帮助群集发现和维护其中所有节点的状态。当向群集中添加或从群集中删除某个节点时,群集状态将会发生更改。群集名称设置用于在不同群集之间创建逻辑差异。以下是一些帮助你使用云供应商提供的 API 的模块:
-
Azure discovery
-
EC2 discovery
-
Google compute engine discovery
-
Zen discovery
Gateway
该模块在整个群集重启过程中维护群集状态和切片数据。该模块的静态设置如下:
Setting |
Possible value |
Description |
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 |
布尔值(默认值为真) |
此设置指定了无论群集中加入了多少节点,恢复进程都将等待启动的时间。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 |
Setting & Description |
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 请求之前要排队的事件数量。 |
Indices
该模块维护设置,这些设置全局针对每个索引进行设置。以下设置主要与内存使用相关:
Circuit Breaker
此项用于防止操作导致 OutOfMemroyError。此项设置主要限制 JVM 堆大小。例如,indices.breaker.total.limit 设置的默认值是 JVM 堆的 70%。
Fielddata Cache
这主要是用于在一个字段中聚合时使用的。建议有足够的内存分配给它。使用索引中用于字段数据缓存的内存量可以得到 indices.fielddata.cache.size 设置的控制。
Shard Request Cache
该缓存用于存储每个分片的本地搜索数据。可以在创建索引期间启用缓存或通过发送 URL 参数禁用缓存。
Disable cache - ?request_cache = true
Enable cache "index.requests.cache.enable": true
Indices Recovery
它在恢复过程中控制资源。以下是设置−
Setting |
Default value |
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 |