Elasticsearch参数配置汇总

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch参数配置汇总

一、配置文件位置

Elasticsearch 有三个配置文件:

  • elasticsearch.yml用于配置 Elasticsearch
  • jvm.options用于配置 Elasticsearch JVM 设置
  • log4j2.properties用于配置 Elasticsearch 日志记录

这些文件位于配置目录中,其默认位置取决于 关于安装是否来自归档发行版(或)或软件包发行版(Debian 或 RPM 软件包)。tar.gzzip

对于归档分发,配置目录位置默认为 。配置目录的位置可以通过环境变量更改,如下所示:$ES_HOME/configES_PATH_CONF

ES_PATH_CONF=/path/to/my/config ./bin/elasticsearch

或者,您可以通过 命令行或通过您的 shell 配置文件。exportES_PATH_CONF

对于软件包分发,配置目录位置默认为 .配置目录的位置也可以更改 通过环境变量,但请注意,在您的 外壳是不够的。相反,这个变量来源于(对于 Debian 软件包)和(对于 RPM 软件包)。您需要相应地编辑其中一个文件中的条目 更改配置目录位置。/etc/elasticsearchES_PATH_CONF/etc/default/elasticsearch/etc/sysconfig/elasticsearchES_PATH_CONF=/etc/elasticsearch

二、配置文件格式

配置格式为 YAML。这是一个 更改数据和日志目录路径的示例:

path:
    data: /var/lib/elasticsearch
    logs: /var/log/elasticsearch

还可以按如下方式拼合设置:

path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

在 YAML 中,可以将非标量值的格式设置为序列:

discovery.seed_hosts:
   - 192.168.1.10:9300
   - 192.168.1.11
   - seeds.mydomain.com

虽然不太常见,但您也可以将非标量值格式化为数组:

discovery.seed_hosts: ["192.168.1.10:9300", "192.168.1.11", "seeds.mydomain.com"]

三、环境变量替换

使用符号引用的环境变量 配置文件将替换为环境的值 变量。例如:${...}

node.name:    ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}

环境变量的值必须是简单字符串。使用逗号分隔的字符串提供 Elasticsearch 将解析为列表的值。例如,Elasticsearch 会将以下字符串拆分为环境变量的值列表:${HOSTNAME}

export HOSTNAME="host1,host2"

四、群集和节点设置类型

群集和节点设置可以根据其配置方式进行分类:

动态

您可以使用群集更新设置 API 在正在运行的群集上配置和更新动态设置。 您还可以在未启动或关闭时本地配置动态设置 节点使用 .elasticsearch.yml

使用群集更新设置 API 进行的更新可以是永久性的,这 在群集重新启动期间应用,或在群集后重置的暂时性应用。 重新启动。您还可以通过分配暂时性或持久性设置来重置它们 使用 API 的值。null

如果使用多种方法配置相同的设置,则 Elasticsearch 将应用 按以下优先级顺序排列的设置:

  1. 瞬态设置
  2. 持久设置
  3. elasticsearch.yml设置
  4. 默认设置值

例如,您可以应用暂时性设置来覆盖持久性设置 或设置。但是,对设置的更改不会覆盖定义的暂时性或持久性设置。elasticsearch.yml

如果使用 Elasticsearch 服务,请使用用户设置功能配置所有集群设置。此方法允许 Elasticsearch Service 自动 拒绝可能破坏群集的不安全设置。

如果您在自己的硬件上运行 Elasticsearch,请使用集群更新设置 API 来配置动态集群设置。仅用于静态 群集设置和节点设置。API 不需要重启,并且 确保设置的值在所有节点上都相同。elasticsearch.yml

不再建议使用瞬态群集设置。使用持久集群 改为设置。如果群集变得不稳定,可以清除瞬态设置 意外,导致可能不需要的群集配置。看 瞬态设置迁移指南。

静态的

静态设置只能在未启动或关闭的节点上使用 进行配置。elasticsearch.yml

必须在群集中的每个相关节点上设置静态设置。

五、安全设置

某些设置是敏感的,并且依赖于文件系统权限来保护 他们的价值是不够的。对于这个用例,Elasticsearch 提供了一个 密钥库和 elasticsearch-keystore 工具 管理密钥库中的设置。

只有某些设置设计为从密钥库中读取。然而 密钥库没有用于阻止不受支持的设置的验证。添加不支持的 密钥库的设置会导致 Elasticsearch 无法启动。查看设置是否 在密钥库中受支持,请查找“安全”限定符设置 参考。

对密钥库的所有修改只有在重新启动 Elasticsearch 后才会生效。

这些设置,就像配置文件中的常规设置一样, 需要在群集中的每个节点上指定。目前,所有安全设置 是特定于节点的设置,每个节点上必须具有相同的值。elasticsearch.yml

1、可重新加载的安全设置

就像 中的设置值一样,对密钥库的更改 内容不会自动应用于正在运行的 Elasticsearch 节点。重读 设置需要重新启动节点。但是,某些安全设置被标记为可重新加载。此类设置可以重新读取并应用于正在运行的节点。elasticsearch.yml

所有安全设置的值,无论是否可重新加载,都必须相同 跨所有群集节点。进行所需的安全设置更改后, 使用命令,调用:bin/elasticsearch-keystore add

POST _nodes/reload_secure_settings
{
  "secure_settings_password": "keystore-password" 
}

用于加密 Elasticsearch 密钥库的密码。

此 API 解密并重新读取每个集群节点上的整个密钥库, 但仅应用可重新加载的安全设置。对其他的更改 设置在下次重新启动之前不会生效。呼叫返回后, 重新加载已完成,这意味着所有内部数据结构 根据这些设置已更改。一切看起来都好像 设置从一开始就具有新值。

更改多个可重新加载的安全设置时,请在每个设置上修改所有设置 群集节点,然后在每次修改后发出reload_secure_settings调用,而不是重新加载。

六、集群级分片分配设置

您可以使用以下设置来控制分片分配和恢复:

cluster.routing.allocation.enable

(动态) 启用或禁用特定类型分片的分配:

  • all-(默认值)允许为所有类型的分片分配分片。
  • primaries- 仅允许为主分片分配分片。
  • new_primaries- 仅允许为新索引的主分片分配分片。
  • none- 不允许对任何索引进行任何类型的分片分配。

在以下情况下,此设置不会影响本地主分片的恢复 重新启动节点。具有未分配的主节点副本的重新启动节点 分片将立即恢复该主数据库,假设其分配 ID 匹配 处于群集状态的活动分配 ID 之一。

cluster.routing.allocation.node_concurrent_incoming_recoveries

(动态) 允许在节点上发生多少个并发传入分片恢复。传入恢复是恢复 在节点上分配目标分片(除非分片正在重新定位,否则很可能是副本)的位置。默认值为 。2

cluster.routing.allocation.node_concurrent_outgoing_recoveries

(动态) 一个节点上允许发生多少个并发传出分片恢复。传出恢复是恢复 在节点上分配源分片(很可能是主分片,除非分片正在重新定位)的位置。默认值为 。2

cluster.routing.allocation.node_concurrent_recoveries

(动态) 用于同时设置 和 的快捷方式。默认值为 2。cluster.routing.allocation.node_concurrent_incoming_recoveriescluster.routing.allocation.node_concurrent_outgoing_recoveries

cluster.routing.allocation.node_initial_primaries_recoveries

(动态) 当副本的恢复通过网络进行时,恢复 节点重新启动后未分配的主节点使用本地磁盘中的数据。 这些应该很快,因此可以在 在同一节点上并行。默认值为 。4

cluster.routing.allocation.same_shard.host

(动态) 如果 ,则禁止将分片的多个副本分配给 同一主机上的不同节点,即具有相同网络的节点 地址。默认为 ,表示分片的副本可以 有时分配给同一主机上的节点。此设置仅为 如果在每个主机上运行多个节点,则相关。truefalse

1、分片重新平衡设置

当集群在每个节点上具有相同数量的分片时,它是平衡的,并且 所有节点都需要相同的资源,而不会集中来自 任何节点上的任何索引。Elasticsearch运行一个称为重新平衡的自动过程,该过程 在集群中的节点之间移动分片以改善其平衡。 重新平衡遵守所有其他分片分配规则,例如分配过滤强制感知,这可能会阻止它完全 平衡群集。在这种情况下,再平衡努力实现最大目标 可在已配置的规则内实现平衡群集。如果您使用的是数据层,则 Elasticsearch 会自动应用分配过滤 将每个分片放置在适当层中的规则。这些规则意味着 平衡器在每个层中独立工作。

您可以使用以下设置来控制分片的重新平衡 集群:

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.type

选择用于计算集群余额的算法。选择所需余额分配器的默认值。此分配器 运行一个后台任务,该任务计算所需的分片平衡 簇。一旦这个后台任务完成,Elasticsearch 就会将分片移动到他们的 所需位置。desired_balance

也可以设置为 以选择旧版平衡分配器。这 allocator 是 8.6.0 之前的 Elasticsearch 版本中的默认分配器。它运行 在前台,防止主节点并行执行其他工作。它 通过选择少量分片移动来工作,这些移动会立即改善 集群的平衡,当这些分片移动完成时,它会运行 并再次选择另外几个碎片进行移动。由于这个分配器使其 仅根据集群的当前状态做出决策,有时会 在平衡集群时多次移动分片。balanced

1、分片平衡启发式设置

重新平衡的工作原理是根据每个节点的分配计算其权重 的分片,然后在节点之间移动分片以减轻 较重的节点并增加较轻节点的重量。群集是 当没有可能的碎片移动时平衡,可以带来重量 任何节点的权重都接近任何其他节点,超过可配置的 门槛。

节点的权重取决于它持有的分片数量和总数 这些分片的估计资源使用情况以 磁盘上的分片以及支持写入流量所需的线程数 碎片。Elasticsearch 估计属于数据流的分片的资源使用情况 当它们由翻转创建时。新分片的估计磁盘大小 是数据流中其他分片的平均大小。估计写入 新分片的负载是最近实际写入负载的加权平均值 数据流中的分片。不属于 的写入索引的分片 数据流的估计写入负载为零。

以下设置控制 Elasticsearch 如何将这些值组合成一个整体 测量每个节点的权重。

cluster.routing.allocation.balance.shard

(浮动,动态) 定义分配给每个节点的分片总数的权重因子。 默认值为 。提高这个值会增加 Elasticsearch 的趋势 在另一个平衡之前均衡节点之间的分片总数 变量。0.45f

cluster.routing.allocation.balance.index

(浮动,动态) 定义分配给每个索引的每个索引的分片数的权重因子 节点。默认值为 。提高这个值会增加 Elasticsearch 的趋势 在节点上均衡每个索引的分片数 平衡变量。0.55f

cluster.routing.allocation.balance.disk_usage

(浮动,动态) 根据预测磁盘定义平衡分片的权重因子 大小(以字节为单位)。默认值为 。提高此值会增加趋势 的 Elasticsearch 来平衡节点之间的总磁盘使用量,领先于其他节点 平衡变量。2e-11f

cluster.routing.allocation.balance.write_load

(浮动,动态) 定义每个分片的写入负载的权重因子,根据 分片所需的估计索引线程数。默认值为 。 提高此值会增加 Elasticsearch 均衡总写入的趋势。 在其他平衡变量之前跨节点加载。10.0f

cluster.routing.allocation.balance.threshold

(浮动,动态) 触发重新平衡分片移动的重量最小改进。 默认值为 。提高此值将导致 Elasticsearch 停止重新平衡 更快地分片,使集群处于更加不平衡的状态。1.0f

无论平衡算法的结果如何,重新平衡都可能 由于强制意识和分配等分配规则而不允许 滤波。

2、基于磁盘的分片分配设置

基于磁盘的分片分配器确保所有节点都有足够的磁盘空间 无需执行不必要的分片移动。它分配分片 基于一对称为低水位线和高水位线的阈值 水印。其主要目标是确保没有节点超过高点 水印,或者至少任何此类超额只是暂时的。如果节点 超过高水位线,那么 Elasticsearch 将通过移动一些 分片到集群中的其他节点上。

节点暂时超过高水位线是正常的 到时间。

分配器还尝试通过以下方式清除节点的高水位线 禁止向超过低值的节点分配更多分片 水印。重要的是,如果您的所有节点都超过了低水位线 那么就不能分配新的分片,Elasticsearch将无法移动任何分片。 节点之间的分片,以保持磁盘使用率低于高水位线。 必须确保群集总共有足够的磁盘空间,并且 始终是低于低水位线的一些节点。

由基于磁盘的分片分配器触发的分片移动还必须满足 所有其他分片分配规则,例如分配过滤强制感知。如果这些规则太严格,那么它们 还可以防止将节点的磁盘使用率保持在以下所需的分片移动 控制。如果您使用的是数据层,则自动使用Elasticsearch。 配置分配筛选规则以将分片放置在适当的 层,这意味着基于磁盘的分片分配器独立工作 在每个层中。

如果一个节点填满其磁盘的速度比 Elasticsearch 将分片移动到其他地方的速度快 那么就有磁盘完全填满的风险。为了防止这种情况,作为 最后的手段,一旦磁盘使用量达到洪水阶段水位线 Elasticsearch 将阻止对受影响节点上具有分片的索引的写入。它还将 继续将分片移动到集群中的其他节点上。当磁盘使用情况时 在受影响的节点下降到高水位线以下时,Elasticsearch 会自动删除 写入块。

群集中的节点使用非常不同的数量是正常的 的磁盘空间。集群的余额 仅取决于每个节点上的分片数量以及索引 这些碎片属于。它既不考虑这些分片的大小,也不考虑 每个节点上的可用磁盘空间,原因如下:

  • 磁盘使用情况随时间而变化。平衡各个节点的磁盘使用情况 需要更多的分片移动,甚至可能浪费地撤消 早期的运动。移动分片会消耗 I/O 和网络等资源 带宽,并可能从文件系统缓存中逐出数据。这些资源是 在可能的情况下,最好将处理搜索和索引。
  • 每个节点上磁盘使用率相等的群集通常不会表现得更好 比磁盘使用率不相等的磁盘,只要没有磁盘太满。

可以使用以下设置来控制基于磁盘的分配:

cluster.routing.allocation.disk.threshold_enabled

(动态) 默认值为 。设置为 以禁用磁盘分配决策程序。禁用后,它还将删除任何现有的索引块。truefalseindex.blocks.read_only_allow_delete

cluster.routing.allocation.disk.watermark.low

(动态) 控制磁盘使用情况的低水位线。它默认为 ,这意味着 Elasticsearch 不会将分片分配给磁盘使用率超过 85% 的节点。也可以将其设置为比率值,例如 .它也可以设置为绝对字节值(如),以防止 Elasticsearch 在可用空间少于指定量时分配分片。此设置对新创建的索引的主分片没有影响,但会阻止分配其副本。85%0.85500mb

cluster.routing.allocation.disk.watermark.low.max_headroom

(动态)控制低水位线的最大净空(如果是百分比/比率值)。 未显式设置时默认为 200GB。 这限制了所需的可用空间量。cluster.routing.allocation.disk.watermark.low

cluster.routing.allocation.disk.watermark.high

(动态) 控制高水位线。它默认为 ,这意味着 Elasticsearch 将尝试将分片从磁盘使用率高于 90% 的节点中重新定位。也可以将其设置为比率值,例如 .也可以将其设置为绝对字节值(类似于低水位线),以便在节点的可用空间量小于指定量时将分片重新定位到远离节点的位置。此设置会影响所有分片的分配,无论之前是否分配。90%0.9

cluster.routing.allocation.disk.watermark.high.max_headroom

(动态)控制高水位线的最大净空(如果是百分比/比率值)。 未显式设置时默认为 150GB。 这限制了所需的可用空间量。cluster.routing.allocation.disk.watermark.high

cluster.routing.allocation.disk.watermark.enable_for_single_data_node

(静态) 在早期版本中,默认行为是忽略单个磁盘水印 做出分配决策时的数据节点群集。这是已弃用的行为 自 7.14 起,并在 8.0 中删除。此设置的唯一有效值 现在是.该设置将在将来的版本中删除。true

cluster.routing.allocation.disk.watermark.flood_stage

(动态) 控制泛洪阶段水印,默认为 95%。Elasticsearch 在节点上分配了一个或多个分片且至少有一个磁盘超过泛洪阶段的每个索引上强制实施只读索引块 ()。此设置是防止节点磁盘空间不足的最后手段。当磁盘利用率低于高水位线时,将自动释放索引块。与低水位线值和高水位线值类似,也可以将其设置为比率值,例如,或绝对字节值。

重置索引上的只读索引块的示例:my-index-000001

PUT /my-index-000001/_settings
{
  "index.blocks.read_only_allow_delete": null
}

cluster.routing.allocation.disk.watermark.flood_stage.max_headroom

(动态)控制洪水阶段水印的最大裕量(如果是百分比/比率值)。 未显式设置时默认为 100GB。 这限制了所需的可用空间量。cluster.routing.allocation.disk.watermark.flood_stage

不能混合使用百分比/比率值和字节值 这 和设置。所有值 设置为百分比/比率值,或全部设置为字节值。此强制执行是 以便 Elasticsearch 可以验证设置是否内部一致,从而确保 磁盘低阈值小于磁盘高阈值,磁盘高阈值为 小于洪水阶段阈值。对最大值进行了类似的比较检查 净空值。cluster.routing.allocation.disk.watermark.lowcluster.routing.allocation.disk.watermark.highcluster.routing.allocation.disk.watermark.flood_stage

cluster.routing.allocation.disk.watermark.flood_stage.frozen

(动态) 控制专用冻结节点的泛洪阶段水印,默认为 95%.

cluster.routing.allocation.disk.watermark.flood_stage.frozen.max_headroom

(动态) 控制洪水阶段水印的最大净空(在 百分比/比率值),用于专用冻结节点。未明确表示时默认为 20GB 设置。这限制了专用冻结节点上所需的可用空间量。cluster.routing.allocation.disk.watermark.flood_stage.frozen

cluster.info.update.interval

(动态) Elasticsearch 应该多久检查一次 簇。默认值为 。30s

百分比值是指已用磁盘空间,而字节值是指 可用磁盘空间。这可能会令人困惑,因为它颠倒了高和 低。例如,将低水位线设置为 10gb 并将高水位线设置为 5gb 是有意义的 水印到 <>GB,但不是相反。

将低水位线更新为至少 100 GB 可用的示例,高 可用水位至少为 50 GB 的水印,以及 10 的洪水阶段水印 千兆字节可用,并且每分钟更新有关群集的信息:

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.disk.watermark.low": "100gb",
    "cluster.routing.allocation.disk.watermark.high": "50gb",
    "cluster.routing.allocation.disk.watermark.flood_stage": "10gb",
    "cluster.info.update.interval": "1m"
  }
}

3、分片分配感知

您可以使用自定义节点属性作为感知属性来启用 Elasticsearch 在分配分片时考虑您的物理硬件配置。 如果 Elasticsearch 知道哪些节点位于同一物理服务器上、同一机架中,或者 在同一区域中,它可以将主分片及其副本分片分发到 将发生故障时丢失所有分片副本的风险降至最低。

使用动态设置启用分片分配感知时,分片仅 分配给为指定感知属性设置了值的节点。 如果您使用多个感知属性,Elasticsearch 会考虑每个属性 分配分片时分开。cluster.routing.allocation.awareness.attributes

4、启用分片分配感知

要启用分片分配感知,请执行以下操作:

  1. 使用自定义节点属性指定每个节点的位置。例如 如果您希望 Elasticsearch 将分片分布在不同的机架上,您可以 设置在每个节点的配置文件中调用的感知属性。rack_idelasticsearch.yml
node.attr.rack_id: rack_one

您还可以在启动节点时设置自定义属性:

./bin/elasticsearch -Enode.attr.rack_id=rack_one
  1. 告诉 Elasticsearch 在以下情况下考虑一个或多个意识属性 通过设置每个符合主节点条件的分片来分配分片 节点的配置文件。cluster.routing.allocation.awareness.attributeselasticsearch.yml
cluster.routing.allocation.awareness.attributes: rack_id

使用此示例配置,如果启动两个节点,设置为 并创建一个包含 5 个主节点的索引 每个主节点的分片和 1 个副本,所有主节点和副本都是 跨两个节点分配。node.attr.rack_idrack_one

如果添加两个设置为 的节点 , Elasticsearch将分片移动到新节点,确保(如果可能的话) 同一分片的两个副本不在同一机架中。node.attr.rack_idrack_two

如果失败并关闭其两个节点,则默认为 Elasticsearch 将丢失的分片副本分配给 中的节点。防止多个 将特定分片的副本分配给同一位置,您可以 启用强制感知。rack_tworack_one

5、强迫感知

默认情况下,如果一个位置失败,Elasticsearch 会分配所有缺失的位置 将分片复制到其余位置。虽然你可能有足够的 跨所有位置的资源,用于托管主分片和副本分片,单个 位置可能无法托管所有分片。

为了防止单个位置在发生故障时过载, 您可以设置,以便没有副本 已分配,直到节点在另一个位置可用。cluster.routing.allocation.awareness.force

例如,如果您有一个感知属性调用并配置节点 在 和 中,您可以使用强制感知来阻止 Elasticsearch 如果只有一个可用区域,则从分配副本

cluster.routing.allocation.awareness.attributes: zone
cluster.routing.allocation.awareness.force.zone.values: zone1,zone2

使用此示例配置,如果使用 set 启动两个节点 并创建一个包含 5 个分片和 1 个副本的索引,Elasticsearch 创建 索引并分配 5 个主分片,但不分配副本。副本是 仅在设置为 的节点可用时分配。node.attr.zonezone1node.attr.zonezone2

6、集群级分片分配筛选

您可以使用集群级分片分配过滤器来控制 Elasticsearch 的位置 从任何索引分配分片。这些群集范围的筛选器应用于 结合每个索引的分配筛选分配感知

分片分配筛选器可以基于自定义节点属性或内置的 、 和 属性。_name_host_ip_publish_ip_ip_host_id_tier

这些设置是动态的,使实时索引能够 从一组节点移动到另一组节点。分片仅在以下情况下重新定位 可以在不破坏其他路由约束的情况下执行此操作,例如从不 在同一节点上分配主分片和副本分片。cluster.routing.allocation

集群级分片分配过滤的最常见用例是 您想要停用节点。在关闭节点之前将分片移出节点 它下来,您可以创建一个过滤器,通过其 IP 地址排除节点:

PUT _cluster/settings
{
  "persistent" : {
    "cluster.routing.allocation.exclude._ip" : "10.0.0.1"
  }
}

七、群集路由设置

cluster.routing.allocation.include.{attribute}

(动态) 将分片分配给至少具有 逗号分隔的值。{attribute}

cluster.routing.allocation.require.{attribute}

(动态) 仅将分片分配给具有所有 逗号分隔的值。{attribute}

cluster.routing.allocation.exclude.{attribute}

(动态) 不要将分片分配给具有任何 逗号分隔的值。{attribute}

群集分配设置支持以下内置属性:

_name

按节点名称匹配节点

_host_ip

按主机 IP 地址(与主机名关联的 IP)匹配节点

_publish_ip

通过发布 IP 地址匹配节点

_ip

匹配或_host_ip_publish_ip

_host

按主机名匹配节点

_id

按节点 ID 匹配节点

_tier

按节点的数据角色匹配节点

_tier筛选基于 节点 角色。只 角色的子集是数据层角色,通用 数据角色 将与任何 筛选匹配。 作为数据层角色的角色子集,但通用 数据角色 将与任何 筛选匹配。

指定属性值时可以使用通配符,例如:

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.exclude._ip": "192.168.2.*"
  }
}

八、审核安全设置

您可以使用审核日志记录来记录与安全相关的内容 身份验证失败、连接被拒绝和数据访问等事件 事件。此外,通过 API 对安全配置进行更改,例如 在创建、更新和删除本机内置用户时,还会记录角色、角色映射API 密钥

审核日志仅在某些订阅级别可用。 有关详细信息,请参阅 https://www.elastic.co/subscriptions

如果已配置,则必须在群集中的每个节点上设置审核设置。 必须在每个节点上配置静态设置,例如 。对于动态审核设置,请使用群集更新设置 API 确保设置是 所有节点上都相同。xpack.security.audit.enabledelasticsearch.yml

1、常规审核设置

xpack.security.audit.enabled

(静态) 设置为 以在节点上启用审核。默认值为 。这 将审核事件放在名为 on 的专用文件中 每个节点。truefalse_audit.json

如果启用,则必须在所有节点上配置此设置 在群集中。elasticsearch.yml

2、审核的事件设置

可以控制事件和有关记录内容的其他一些信息 使用以下设置:

xpack.security.audit.logfile.events.include

(动态) 指定要在审核输出中打印的事件类型。 此外,可用于详尽地审核所有事件,但这通常是 气馁,因为它会变得非常冗长。 默认列表值包含:。_allaccess_denied, access_granted, anonymous_access_denied, authentication_failed,

connection_denied, tampered_request, run_as_denied, run_as_granted,

security_config_change

xpack.security.audit.logfile.events.exclude

(动态) 从包含列表中排除指定类型的事件。 这在设置包含特殊值的情况下很有用。 默认值为空列表。events.include_all

xpack.security.audit.logfile.events.emit_request_body

(动态) 指定是否将来自 REST 请求的完整请求正文作为 某些类型的审核事件的属性。此设置可用于审核搜索查询

默认值为 ,因此不打印请求正文。false

请注意,敏感数据可能会在包括以下内容时以纯文本形式进行审核 审核事件中的请求正文,即使所有安全 API(例如 更改用户的密码,在审核时过滤掉凭据。

3、本地节点信息设置

xpack.security.audit.logfile.emit_node_name

(动态) 指定是否将节点名称作为字段包含在 每个审核事件。默认值为 。false

xpack.security.audit.logfile.emit_node_host_address

(动态) 指定是否在每个审核事件中将节点的 IP 地址作为字段包括在内。 默认值为 。false

xpack.security.audit.logfile.emit_node_host_name

(动态) 指定是否在每个审核事件中将节点的主机名作为字段包括在内。 默认值为 。false

xpack.security.audit.logfile.emit_node_id

(动态) 指定是否在每个审核事件中将节点 ID 作为字段包括在内。 与节点名称不同,如果管理员,其值可能会更改 更改配置文件中的设置,节点 ID 将跨群集保留 重新启动,管理员无法更改它。 默认值为 。true

4、审核日志文件事件忽略策略

以下设置会影响忽略策略,这些策略可以精细控制将哪些审核事件打印到日志文件。 具有相同策略名称的所有设置组合在一起形成一个策略。 如果事件与任何策略的所有条件匹配,则会忽略该事件,并且不会打印该事件。 大多数审核事件都受忽略策略的约束。唯一的例外是 除非完全排除,否则无法筛选掉的事件类型的事件。security_config_change

xpack.security.audit.logfile.events.ignore_filters..users

(动态) 用户名或通配符的列表。指定的策略将 不为与这些值匹配的用户打印审核事件。

xpack.security.audit.logfile.events.ignore_filters..realms

(动态) 身份验证领域名称或通配符的列表。指定的策略将 不为这些领域中的用户打印审核事件。

xpack.security.audit.logfile.events.ignore_filters..actions

(动态) 操作名称或通配符的列表。可以在审核事件的字段中找到操作名称。指定的策略不会打印审核事件 与这些值匹配的操作。action

xpack.security.audit.logfile.events.ignore_filters..roles

(动态) 角色名称或通配符的列表。指定的策略将 不为具有这些角色的用户打印审核事件。如果用户有多个 策略未涵盖其中一些角色,策略将不涵盖此事件。

xpack.security.audit.logfile.events.ignore_filters..indices

(动态) 索引名称或通配符的列表。指定的策略将 当事件中的所有索引都匹配时不打印审核事件 这些值。如果事件涉及多个指数,其中一些指数不在保单范围内,则保单将承保此事件。



文章下方有交流学习区!一起学习进步!也可以前往官网,加入官方微信交流群

你的支持和鼓励是我创作的动力❗❗❗

Doker的成长,欢迎大家一起陪伴!!!

官网:Doker 多克; 官方旗舰店首页-Doker 多克 3C旗舰店-淘宝网 全品优惠

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
1月前
|
存储 负载均衡 索引
linux7安装elasticsearch-7.4.0集群配置
linux7安装elasticsearch-7.4.0集群配置
121 0
|
1月前
|
Docker 索引 容器
Elasticsearch跨集群检索配置
Elasticsearch跨集群检索配置
59 1
|
8月前
|
存储 人工智能 自然语言处理
Elasticsearch Relevance Engine---为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解]
Elasticsearch Relevance Engine---为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解]
Elasticsearch Relevance Engine---为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解]
|
1月前
|
Unix Linux iOS开发
Elasticsearch如何配置日志
Elasticsearch如何配置日志
|
2天前
|
缓存 安全 Java
Elasticsearch—生产环境集群核心配置
Elasticsearch—生产环境集群核心配置
6 0
|
8天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch,帮助你快速搭建起这个强大的工具
【6月更文挑战第7天】本文档详细介绍了如何在Rocky Linux 8上安装和配置Elasticsearch,首先通过添加Elasticsearch仓库并使用yum安装。接着,配置Elasticsearch,包括修改`elasticsearch.yml`、设置内存和文件描述符,以及可选的安全设置。启动Elasticsearch后,通过验证日志和测试连接确保其正常运行。文章还列举了常见问题及解决方法,如启动失败、内存不足和网络问题。按照这些步骤,用户可以在Rocky Linux 8上成功部署Elasticsearch,为数据管理与分析提供强大支持。
26 5
|
1月前
|
前端开发 安全 Ubuntu
Elasticsearch安装和配置
Elasticsearch安装和配置
123 0
|
1月前
|
存储 运维 监控
Elasticsearch 配置文件 path.data 中可以配置多个数据目录的路径吗?
Elasticsearch 配置文件 path.data 中可以配置多个数据目录的路径吗?
66 7
|
1月前
|
存储 Serverless 定位技术
深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析
深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析
14 0
|
1月前
|
存储 安全 数据管理
【专栏】指导在Rocky Linux 8上安装配置Elasticsearch,包括添加仓库等
【4月更文挑战第28天】本文指导在Rocky Linux 8上安装配置Elasticsearch,包括添加仓库,运行`yum install elasticsearch`进行安装,修改配置文件如`cluster.name`和`network.host`,启动服务并验证其正常运行。同时,文章提及了内存、文件描述符设置及安全配置,并列出常见问题及解决方法,帮助用户成功搭建Elasticsearch。