参考

配置Elasticsearch

配置Elasticsearch

Elasticsearch附带了良好的默认值,并且只需要很少的配置。可以使用群集更新设置 API 在正在运行的群集上更改大多数设置

配置文件位置

Elasticsearch有三个配置文件:

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

这些文件位于 config 目录中,其默认位置取决于安装是否来自归档发行版(或 )或软件包发行版(Debian 或 RPM 软件包)。tar.gzzip
对于归档发行版,配置目录位置默认为 。配置目录的位置可以通过环境变量更改,如下所示:$ES_HOME/configES_PATH_CONF

获取环境变量

  1. export ES_PATH_CONF

配置文件格式

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

  1. path:
  2. data: /var/lib/elasticsearch
  3. logs: /var/log/elasticsearch

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

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

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

  1. discovery.seed_hosts:
  2. - 192.168.1.10:9300
  3. - 192.168.1.11
  4. - seeds.mydomain.com

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

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

环境变量替换

使用配置文件中的表示法引用的环境变量将替换为环境变量的值。例如:${…}

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

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

  1. export HOSTNAME="host1,host2"

配置文件

es配置文件 /usr/local/elasticsearch/config/elasticsearch.yml

  1. # 集群名称,集群(cluster)是一组具有相同 cluster.name 的节点集合
  2. cluster.name: my-application1
  3. # 设置节点名称
  4. node.name: node-0
  5. # 允许外网访问,若不允许可不改
  6. network.host: 0.0.0.0
  7. # 设置http服务的端口
  8. http.port: 9200
  9. # 若允许外网访问,要更改 seed_hosts
  10. discovery.seed_hosts: ["127.0.0.1", "[::1]"]
  11. # 开启跨域访问支持,默认为false
  12. http.cors.enabled: true
  13. # 跨域访问允许的域名地址,(允许所有域名)以上使用正则
  14. http.cors.allow-origin: /.*/

重要的配置项

ElasticSearch只需要很少的配置即可开始,但在生产中使用集群之前,必须考虑许多事项:

节点名称设置

ElasticSearch用作特定ElasticSearch实例的人类可读标识符。此名称包含在许多 API 的响应中。当ElasticSearch开始时,节点名称默认为计算机的主机名,但可以在elasticsearch.yml中显式配置:node.name

  1. node.name: prod-data-2

网络主机设置

默认情况下,ElasticSearch仅绑定到环回地址,例如 127.0.0.1和[::1] 。这足以在单个服务器上运行一个或多个节点的群集以进行开发和测试,但弹性生产群集必须涉及其他服务器上的节点。有许多网络设置,但通常您需要配置的是:network.host

  1. network.host: 192.168.3.40