elasticsearch有很好的默认配置,只需要很少的配置。大多数配置能通过调用集群更新配置api改变。
es有两个配置文件:
- elasticsearch.yml用来配置elasticsearch,它是YAML格式的配置文件
- log4j2.properties用来配置elasticsearch的日志
这两个文件默认在$ES_HOME中的config目录,有些linux系统中将此目录设置到了/etc/elasticsearch.
es配置文件的目录能通过path.conf属性改变:
./bin/elasticsearch -Epath.conf=/path/to/my/config/
环境变量替换
在elasticsearch.yml中,可以使用${...}的形式使用系统环境变量,例如:
node.name: ${HOSTNAME}
network.host: ${ES_NETWORK_HOST}
配置默认值
默认配置可以在命令行通过default.前缀被配置。如果配置了相应的属性,则使用配置的值,否则使用默认值。
./bin/elasticsearch -Edefault.node.name=My_Node
日志配置
es使用log4j 2记录日志。log4j 2使用log4j2.properties文件配置。es暴露了一个${sys:es.logs}的属性,这个属性被解析成配置的日志文件的路径(path.logs)加集群名,可以在配置文件中引用。例如
如果配置了es的日志输出目录是/var/log,es集群名是es,在log4j2.properties中我们如果这样配置:
appender.rolling.fileName = ${sys:es.logs}.log
那么,日志文件将被解析成/var/log/es.log
重要的配置
尽管es只需要很少的配置,但有一些配置在运行在生产环境之前是需要绝对手动配置。
path.data和path.logs
path.data配置指定es索引文件的目录,path.logs知道es日志文件的目录。在zip或.tar.gz的es发行版中,data和logs目录在$ES_HOME目录中,这两个目录非常重要,如果把它们放在默认的位置,在升级es版本是将存在极高的数据丢失风险。
在生产环境,你应该改变这两个目录的位置。
path:
logs: /var/log/elasticsearch
data: /var/data/elasticsearch
path.data能够指定多个路径
path:
data:
- /mnt/elasticsearch_1
- /mnt/elasticsearch_2
- /mnt/elasticsearch_3
cluster.name
集群名称
一个es节点只能加入一个集群,这个集群中的节点使用一个相同的cluster.name,默认的cluster.name是elasticsearch。你应当将它的值改成一个描述集群目的的名字。 否则,可能会有完全不相干的节点因为共享相同的cluster.name而加入到了一个集群中!
node.name
节点名称。默认的,es从uuid中随机取7个字符作为节点标识。注意节点标识是持久化的并且不能被改变。
bootstrap.memory_lock
设置为true来锁住内存。因为当jvm开始swapping时es的效率 会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。 同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过ulimit -l unlimited
命令。
network.host
默认的,es仅仅绑定本地回环地址,如127.0.0.1和[::1].这意味着它不能与其他机器的节点通讯。为了与其他机器的node组成cluster,需要改变es的网络host,例如
network.host: 192.168.1.10
discovery.zen.ping.unicast.hosts
开箱即用,没有任何网络配置,Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305用来尝试连接到在同一服务器上运行的其他节点。这提供了自动聚类体验,而无需进行任何配置。
当与其他服务器上的节点形成集群时,您必须提供集群中可能是活的和可联系的其他节点的种子列表。这可以指定如下:
discovery.zen.ping.unicast.hosts:
- 192.168.1.10:9300
discovery.zen.minimum_master_nodes
为了防止数据丢失,设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)以便每个符合主机条件的节点知道为了形成集群必须可见的主机合格节点的最小数量。