重要的 Elasticsearch 配置

虽然 Elasticsearch 需要很少的配置,但在投入生产之前需要考虑许多设置。

在投入生产之前,必须考虑以下设置:

path.datapath.logs

如果使用.zip.tar.gz包,则datalogs 目录是$ES_HOME. 如果这些重要文件夹保留在其默认位置,则在将 Elasticsearch 升级到新版本时它们被删除的风险很高。

在生产使用中,常规都会更改数据和日志文件夹的位置:

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

RPM 和 Debian 发行版已经为datalogs使用自定义路径。

这些path.data设置可以设置为多个路径,在这种情况下,所有路径都将用于存储数据(属于单个分片的文件都将存储在同一数据路径上):

path:
  data:
    - /mnt/elasticsearch_1
    - /mnt/elasticsearch_2
    - /mnt/elasticsearch_3

cluster.name

一个节点只有cluster.name在与集群中的所有其他节点共享时才能加入集群。默认名称是elasticsearch,应该将其更改为描述集群用途的适当名称。

cluster.name: logging-prod

确保不要在不同环境中重复使用相同的集群名称,否则最终可能会有节点加入错误的集群。

node.name 

Elasticsearch中node.name用作特定 Elasticsearch 实例的可读标识符,因此它出现在许多 API 的响应中。它默认为 Elasticsearch 启动时机器拥有的主机名,但可以在elasticsearch.yml按如下方式显式配置 :

node.name: prod-data-2

network.host

默认情况下,Elasticsearch 仅绑定到环回地址——例如127.0.0.1 和[::1]。这足以在服务器上运行单个开发节点。

TIPS

实际上,可以从$ES_HOME 单个节点上的同一位置启动多个节点。这对于测试 Elasticsearch 形成集群的能力很有用,但生产不推荐这种方式。

为了与其他服务器上的节点形成集群,节点需要绑定到非环回地址。虽然有许多 网络设置,但通常您只需要配置 network.host: 

network.host: 192.168.1.10

network.host设置也支持一些特殊的值,比如 _local__site__global_和修饰:ip4:ip6,细节中可以在network.host中找到。

重要

一旦为 network.host提供自定义设置,Elasticsearch 就会假定正在从开发模式转移到生产模式,并将许多系统启动检查从警告升级为异常。有关更多信息,请参阅开发模式与生产模式

重要的发现和集群形成设置 

在进入生产环境之前,应该配置两个重要的发现和集群形成设置,以便集群中的节点可以相互发现并选举主节点。

discovery.seed_hosts

开箱即用,无需任何网络配置,Elasticsearch 将绑定到可用的环回地址,并将扫描本地端口 9300 到 9305 以尝试连接到运行在同一服务器上的其他节点。这提供了无需进行任何配置的自动集群体验。

当想与其他主机上的节点形成一个集群时,使用该 discovery.seed_hosts设置来提供集群中其他节点的列表,这些节点是符合主节点的并且可能处于活动状态且可通信的,以便为发现过程提供种子。此设置应该是集群中所有符合主节点条件的节点的地址列表。每个地址可以是 IP 地址或主机名,通过 DNS 解析为一个或多个 IP 地址。

如果符合主节点的节点没有固定的名称或地址,请使用 替代主机提供程序来动态查找它们的地址。

cluster.initial_master_nodes

当你第一次启动一个全新的 Elasticsearch 集群时,有一个集群引导步骤,它决定了在第一次选举中投票的主合格节点集。在开发模式下,没有配置发现设置,这一步由节点自己自动执行。由于这种自动引导本质上是不安全的,当在生产模式下启动一个全新的集群时,必须明确列出在第一次选举中应计算其选票的合格主节点。该列表是使用 cluster.initial_master_nodes来设置的。在重新启动集群或向现有集群添加新节点时,不应使用此设置。

discovery.seed_hosts:
   - 192.168.1.10:9300
   - 192.168.1.11 
   - seeds.mydomain.com 
   - [0:0:0:0:0:ffff:c0a8:10c]:9301 
cluster.initial_master_nodes: 
   - master-node-a
   - master-node-b
   - master-node-c
  • 端口是可选的,通常默认为9300,但此默认值可以某些设置覆盖
  • 如果主机名解析为多个 IP 地址,则该节点将尝试在所有解析地址处发现其他节点。
  • IPv6 地址必须用方括号括起来。
  • 初始主节点应由它们的node.name标识 ,默认为它们的主机名。确保中cluster.initial_master_nodes的值完全匹配node.name。如果使用完全限定域名,例如 master-node-a.example.com作为节点名称,那么列表中也必须使用此完全限定名称;相反,如果node.name是一个没有任何尾随限定符的裸主机名,那么cluster.initial_master_nodes还必须省略限定符

有关更多信息,请参阅引导集群和 发现和集群形成设置

设置堆大小

默认情况下,Elasticsearch 告诉 JVM 使用最小和最大大小为 1 GB 的堆。迁移到生产环境时,重要的是配置堆大小以确保 Elasticsearch 有足够的可用堆。

Elasticsearch 通过在jvm.options 中设置Xms(最小堆大小)和Xmx(最大堆大小)分配指定的整个堆 。应该将这两个设置设置为彼此相等。

这些设置的值取决于服务器上可用的 RAM 量:

  • 设置XmxXms不超过物理内存的50%。Elasticsearch 需要内存用于 JVM 堆以外的用途,为此留出空间很重要。例如,Elasticsearch 使用堆外缓冲区来实现高效的网络通信,依靠操作系统的文件系统缓存来高效访问文件,并且 JVM 本身也需要一些内存。所以 Elasticsearch 进程使用的内存超过Xmx设置配置的限制是正常的。
  • 设置XmxXms不超过 JVM 用于压缩对象指针(压缩 oops)的阈值;确切的阈值有所不同,但接近 32 GB。可以通过在日志中查找如下一行来验证当前是否低于阈值:

    heap size [1.9gb], compressed ordinary object pointers [true]
  • 合理地设置XmxXms不超过基于零的oops压缩阈值; 确切的阈值各不相同,但 26 GB 在大多数系统上是安全的,在某些系统上可能高达 30 GB。可以通过使用 JVM 选项启动 Elasticsearch-XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode并查找如下所示的行来验证是否低于此阈值 :

    heap address: 0x000000011be00000, size: 27648 MB, zero based Compressed Oops

    显示启用了基于零的oops压缩 。如果未启用基于零的oops压缩 ,那么将看到如下所示的一行:

    heap address: 0x0000000118400000, size: 28672 MB, Compressed Oops with base: 0x00000001183ff000

Elasticsearch 可用的堆越多,它可用于其内部缓存的内存就越多,但可供操作系统用于文件系统缓存的内存就越少。此外,更大的堆会导致更长的垃圾收集暂停。

以下是如何通过 jvm.options 文件设置堆大小的示例:

-Xms2g 
-Xmx2g 

也可以通过环境变量设置堆大小。在 jvm.options文件中注释掉Xms,Xmx设置,通过ES_JAVA_OPTS设置这些值:

ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch 
ES_JAVA_OPTS="-Xms4000m -Xmx4000m" ./bin/elasticsearch 

重要

Windows 服务配置堆与上述不同。最初为 Windows 服务填充的值可以按上述方式配置,但在安装服务后会有所不同。有关其他详细信息,请参阅Windows 服务文档

JVM 堆dump路径 

默认情况下,Elasticsearch 将 JVM 内存不足异常时的堆转储配置到默认数据目录(RPMDebian包发行版为 /var/lib/elasticsearchtarzip存档发行版为 Elasticsearch 安装根目录下的data目录) . 如果默认路径不适合存放堆转储,可在 jvm.options修改条目-XX:HeapDumpPath=...。如果指定目录,JVM 将根据正在运行的实例的 PID 生成堆转储文件名。如果指定固定文件名而不是目录,则当JVM在内存不足异常执行堆转储时,该文件必须不存在,否则堆转储将失败。

GC 日志记录

默认情况下,Elasticsearch 启用 GC 日志。具体配置项在jvm.options配置,输出到与 Elasticsearch 日志相同的默认位置。默认配置每 64 MB 轮换一次日志,最多可消耗 2 GB 的磁盘空间。

可以使用JEP 158: Unified JVM Logging 中描述的命令行选项重新配置 JVM 日志。除非更改jvm.options默认文件,否则除了您的设置之外,还会应用 Elasticsearch 默认配置。要禁用默认配置,首先通过提供-Xlog:disable选项禁用日志记录 ,然后提供指定的命令行选项。这将禁用所有JVM 日志记录,因此请务必查看可用选项并启用需要的所有内容。

要查看原始 JEP 中未包含的更多选项,请参阅 使用 JVM 统一日志记录框架启用日志记录

例子

  • 通过创建$ES_HOME/config/jvm.options.d/gc.options使用一些示例选项,将默认 GC 日志输出位置更改为/opt/my-app/gc.log

    # Turn off all previous logging configuratons
    -Xlog:disable
    
    # Default settings from JEP 158, but with `utctime` instead of `uptime` to match the next line
    -Xlog:all=warning:stderr:utctime,level,tags
    
    # Enable GC logging to a custom location with a variety of options
    -Xlog:gc*,gc+age=trace,safepoint:file=/opt/my-app/gc.log:utctime,pid,tags:filecount=32,filesize=64m
  • 配置 Elasticsearch Docker 容器将 GC 调试日志发送到标准错误 ( stderr)。让容器编排器处理输出。如果使用ES_JAVA_OPTS环境变量,请指定:

    MY_OPTS="-Xlog:disable -Xlog:all=warning:stderr:utctime,level,tags -Xlog:gc=debug:stderr:utctime"
    docker run -e ES_JAVA_OPTS="$MY_OPTS" # etc

临时目录 

默认情况下,Elasticsearch 使用启动脚本在系统临时目录下创建的私有临时目录。

在某些 Linux 发行版上,系统工具会清除/tmp最近未访问过的文件和目录。如果Elasticsearch运行时长时间不使用需要临时目录的功能,私有临时目录可能会被系统删除。如果随后使用需要临时目录的功能,就会导致问题。

如果使用.deb.rpm包安装 Elasticsearch,并运行在systemd中,那么 Elasticsearch 使用的私有临时目录将被排除在定期清理之外。

但是,如果打算在 Linux 上长时间运行.tar.gz发行版,应该考虑为 Elasticsearch 创建一个专用的不会被清理的临时目录。此目录应设置权限,以便只有运行 Elasticsearch 的用户才能访问它。在启动 Elasticsearch 之前通过$ES_TMPDIR环境变量设置为指向该目录。

JVM 致命错误日志

默认情况下,Elasticsearch 将 JVM 配置为将致命错误日志写入默认日志目录(RPMDebian包发行版为 /var/log/elasticsearchtarzip存档发行版为 Elasticsearch 安装根目录下的logs目录)。这些是 JVM 在遇到致命错误(例如,分段错误)时生成的日志。如果该路径不适合于接收的日志,则应修改中 jvm.options中的​​​​​​​-XX:ErrorFile=...条目到备用路径。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前言 第1章 Elasticsearch入门 1 1.1 Elasticsearch是什么 1 1.1.1 Elasticsearch的历史 2 1.1.2 相关产品 3 1.2 全文搜索 3 1.2.1 Lucene介绍 4 1.2.2 Lucene倒排索引 4 1.3 基础知识 6 1.3.1 Elasticsearch术语及概念 6 1.3.2 JSON介绍 10 1.4 安装配置 12 1.4.1 安装Java 12 1.4.2 安装Elasticsearch 12 1.4.3 配置 13 1.4.4 运行 15 1.4.5 停止 17 1.4.6 作为服务 17 1.4.7 版本升级 19 1.5 对外接口 21 1.5.1 API约定 22 1.5 .2 REST介绍 25 1.5.3 Head插件安装 26 1.5.4 创建库 27 1.5.5 插入数据 28 1.5.6 修改文档 28 1.5.7 查询文档 29 1.5.8 删除文档 29 1.5.9 删除库 30 1.6 Java接口 30 1.6.1 Java接口说明 30 1.6.2 创建索引文档 33 1.6.3 增加文档 34 1.6.4 修改文档 35 1.6.5 查询文档 35 1.6.6 删除文档 35 1.7 小结 36 第2章 索引 37 2.1 索引管理 37 2.1.1 创建索引 37 2.1.2 删除索引 39 2.1.3 获取索引 39 2.1.4 打开/关闭索引 40 2.2 索引映射管理 41 2.2.1 增加映射 41 2.2.2 获取映射 44 2.2.3 获取字段映射 45 2.2.4 判断类型是否存在 46 2.3 索引别名 46 2.4 索引配置 51 2.4.1 更新索引配置 51 2.4.2 获取配置 52 2.4.3 索引分析 52 2.4.4 索引模板 54 2.4.5 复制配置 55 2.4.6 重建索引 56 2.5 索引监控 60 2.5.1 索引统计 60 2.5.2 索引分片 62 2.5.3 索引恢复 63 2.5.4 索引分片存储 64 2.6 状态管理 64 2.6.1 清除缓存 64 2.6.2 索引刷新 64 2.6.3 冲洗 65 2.6.4 合并索引 65 2.7 文档管理 66 2.7.1 增加文档 66 2.7.2 更新删除文档 69 2.7.3 查询文档 73 2.7.4 多文档操作 76 2.7.5 索引词频率 80 2.7.6 查询更新接口 83 2.8 小结 87 第3章 映射 88 3.1 概念 88 3.2 字段数据类型 90 3.2.1 核心数据类型 91 3.2.2 复杂数据类型 96 3.2.3 地理数据类型 100 3.2.4 专门数据类型 106 3.3 元字段 108 3.3.1 _all字段 109 3.3.2 _field_names字段 109 3.3.3 _id字段 110 3.3.4 _index字段 110 3.3.5 _meta字段 111 3.3.6 _parent字段 111 3.3.7 _routing字段 112 3.3.8 _source字段 114 3.3.9 _type字段 115 3.3.10 _uid字段 115 3.4 映射参数 116 3.4.1 analyzer参数 116 3.4.2 boost参数 118 3.4.3 coerce参数 119 3.4.4 copy_to参数 120 3.4.5 doc_values参数 121 3.4.6 dynamic参数 122 3.4.7 enabled参数 122 3.4.8 fielddata参数 123 3.4.9 format参数 126 3.4.10 geohash参数 128 3.4.11 geohash_precision参数 129 3.4.12 geohash_prefix参数 130 3.4.13 ignore_above参数 131 3.4.14 ignore_malformed参数 131 3.4.15 include_in_all参数 132 3.4.16 index参数 133 3.4.17 index_options参数 133 3.4.18 lat_lon参数 134 3.4.19 fields参数 135 3.4.20 norms参数 136 3.4.21 null_value参数 137 3.4.22 position_increment_gap参数 137 3.4.23 precision_step参数 138 3.4.24 properties参数 138 3.4.25 search_analyzer参数 139 3.4.26 similarity参数 140 3.4.27 store参数 141 3.4.28 term_vector参数 141 3.5 动态映射 142 3.5.1 概念 142 3.5.2 _default_映射 143 3.5.3 动态字段映射 143 3.5.4 动态模板 145 3.5.5 重写默认模板 148 3.6 小结 148 第4章 搜索 149 4.1 深入搜索 149 4.1.1 搜索方式 149 4.1.2 重新评分 153 4.1.3 滚动查询请求 155 4.1.4 隐藏内容查询 158 4.1.5 搜索相关函数 161 4.1.6 搜索模板 164 4.2 查询DSL 167 4.2.1 查询和过滤的区别 167 4.2.2 全文搜索 168 4.2.3 字段查询 179 4.2.4 复合查询 183 4.2.5 连接查询 188 4.2.6 地理查询 190 4.2.7 跨度查询 197 4.2.8 高亮显示 200 4.3 简化查询 203 4.4 小结 206 第5章 聚合 207 5.1 聚合的分类 207 5.2 度量聚合 209 5.2.1 平均值聚合 209 5.2.2 基数聚合 211 5.2.3 最大值聚合 213 5.2.4 最小值聚合 214 5.2.5 和聚合 214 5.2.6 值计数聚合 215 5.2.7 统计聚合 215 5.2.8 百分比聚合 215 5.2.9 百分比分级聚合 216 5.2.10 最高命中排行聚合 217 5.2.11 脚本度量聚合 217 5.2.12 地理边界聚合 221 5.2.13 地理重心聚合 222 5.3 分组聚合 223 5.3.1 子聚合 224 5.3.2 直方图聚合 226 5.3.3 日期直方图聚合 230 5.3.4 时间范围聚合 233 5.3.5 范围聚合 234 5.3.6 过滤聚合 235 5.3.7 多重过滤聚合 236 5.3.8 空值聚合 238 5.3.9 嵌套聚合 239 5.3.10 采样聚合 240 5.3.11 重要索引词聚合 242 5.3.12 索引词聚合 245 5.3.13 总体聚合 251 5.3.14 地理点距离聚合 251 5.3.15 地理散列网格聚合 253 5.3.16 IPv4范围聚合 255 5.4 管道聚合 257 5.4.1 平均分组聚合 259 5.4.2 移动平均聚合 261 5.4.3 总和分组聚合 262 5.4.4 总和累计聚合 262 5.4.5 最大分组聚合 264 5.4.6 最小分组聚合 265 5.4.7 统计分组聚合 266 5.4.8 百分位分组聚合 268 5.4.9 差值聚合 269 5.4.10 分组脚本聚合 273 5.4.11 串行差分聚合 275 5.4.12 分组选择器聚合 276 5.5 小结 277 第6章 集群管理 278 6.1 集群节点监控 278 6.1.1 集群健康值 278 6.1.2 集群状态 279 6.1.3 集群统计 280 6.1.4 集群任务管理 280 6.1.5 待定集群任务 281 6.1.6 节点信息 281 6.1.7 节点统计 282 6.2 集群分片迁移 283 6.3 集群节点配置 284 6.3.1 主节点 285 6.3.2 数据节点 286 6.3.3 客户端节点 286 6.3.4 部落节点 287 6.4 节点发现 287 6.4.1 主节点选举 288 6.4.2 故障检测 288 6.5 集群平衡配置 289 6.5.1 分片分配设置 289 6.5.2 基于磁盘的配置 290 6.5.3 分片智能分配 291 6.5.4 分片配置过滤 292 6.5.5 其他集群配置 293 6.6 小结 293 第7章 索引分词器 294 7.1 分词器的概念 294 7.2 中文分词器 298 7.3 插件 300 7.3.1 插件管理 301 7.3.2 插件安装 301 7.3.3 插件清单 302 7.4 小结 304 第8章 高级配置 305 8.1 网络相关配置 305 8.1.1 本地网关配置 305 8.1.2 HTTP配置 306 8.1.3 网络配置 307 8.1.4 传输配置 308 8.2 脚本配置 310 8.2.1 脚本使用 311 8.2.2 脚本配置 313 8.3 快照和恢复配置 318 8.4 线程池配置 324 8.5 索引配置 326 8.5.1 缓存配置 326 8.5.2 索引碎片分配 329 8.5.3 合并 332 8.5.4 相似模块 332 8.5.5 响应慢日志监控 333 8.5.6 存储 335 8.5.7 事务日志 336 8.6 小结 337 第9章 告警、监控和权限管理 338 9.1 告警 338 9.1.1 安装 338 9.1.2 结构 339 9.1.3 示例 352 9.1.4 告警输出配置 354 9.1.5 告警管理 355 9.2 监控 356 9.2.1 安装 356 9.2.2 配置 357 9.3 权限管理 360 9.3.1 工作原理 361 9.3.2 用户认证 361 9.3.3 角色管理 366 9.3.4 综合示例 368 9.4 小结 369 第10章 ELK应用 370 10.1 Logstash 370 10.1.1 配置 371 10.1.2 插件管理 374 10.2 Kibana配置 377 10.2.1 Discover 379 10.2.2 Visualize 381 10.2.3 Dashboard 383 10.2.4 Settings 386 10.3 综合示例 387 10.4 小结 390 附录 Elasticsearch 5.0的特性与改进 391

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值