参考
配置Elasticsearch
Elasticsearch附带了良好的默认值,并且只需要很少的配置。可以使用群集更新设置 API 在正在运行的群集上更改大多数设置。
配置文件位置
Elasticsearch有三个配置文件:
- elasticsearch.yml用于配置Elasticsearch
- jvm.options用于配置Elasticsearch JVM 设置
- log4j2.properties用于配置Elasticsearch日志记录
这些文件位于 config 目录中,其默认位置取决于安装是否来自归档发行版(或 )或软件包发行版(Debian 或 RPM 软件包)。tar.gzzip
对于归档发行版,配置目录位置默认为 。配置目录的位置可以通过环境变量更改,如下所示:$ES_HOME/configES_PATH_CONF
获取环境变量
export ES_PATH_CONF
配置文件格式
配置格式为 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"
配置文件
es配置文件 /usr/local/elasticsearch/config/elasticsearch.yml
# 集群名称,集群(cluster)是一组具有相同 cluster.name 的节点集合
cluster.name: my-application1
# 设置节点名称
node.name: node-0
# 允许外网访问,若不允许可不改
network.host: 0.0.0.0
# 设置http服务的端口
http.port: 9200
# 若允许外网访问,要更改 seed_hosts
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
# 开启跨域访问支持,默认为false
http.cors.enabled: true
# 跨域访问允许的域名地址,(允许所有域名)以上使用正则
http.cors.allow-origin: /.*/
重要的配置项
ElasticSearch只需要很少的配置即可开始,但在生产中使用集群之前,必须考虑许多事项:
- 路径设置
- 群集名称设置
- 节点名称设置
- 网络主机设置
- 发现设置
- 堆大小设置
- JVM 堆转储路径设置
- GC 日志记录设置
- 临时目录设置
- JVM 致命错误日志设置
- 群集备份
路径设置
ElasticSearch会将您索引到索引的数据和数据流写入目录。ElasticSearch将自己的应用程序日志(其中包含有关集群运行状况和操作的信息)data和logs写入目录。
支持和值因平台而异:path.data,path.logspath:
data: /var/data/elasticsearch
logs: /var/log/elasticsearch
path:
data: "C:\\Elastic\\Elasticsearch\\data"
logs: "C:\\Elastic\\Elasticsearch\\logs"
群集名称设置
节点只有在与群集中的所有其他节点共享群集时才能加入群集。默认名称为elasticsearch,但应将其更改为描述群集用途的相应名称。cluster.namecluster.name: logging-prod
不要在不同的环境中重复使用相同的群集名称。否则,节点可能会加入错误的群集。
节点名称设置
ElasticSearch用作特定ElasticSearch实例的人类可读标识符。此名称包含在许多 API 的响应中。当ElasticSearch开始时,节点名称默认为计算机的主机名,但可以在elasticsearch.yml中显式配置:node.name
node.name: prod-data-2
网络主机设置
默认情况下,ElasticSearch仅绑定到环回地址,例如 127.0.0.1和[::1] 。这足以在单个服务器上运行一个或多个节点的群集以进行开发和测试,但弹性生产群集必须涉及其他服务器上的节点。有许多网络设置,但通常您需要配置的是:network.host
network.host: 192.168.3.40