示例elasticsearch.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 默认数据副本数
index.number_of_replicas: 1
# 默认索引分片数,分片数X副本数就是这个集群的最佳主机数
# 每个节点一个分片,每个分片可以100%使用主机的资源(IO/CPU/Memry)
# 主分片数一旦确定后就不可更改
index.number_of_shards: 5
# 达到该阈值,就会把旧数据交换出去。该参数可以设置百分比或者绝对值
# EFK场景一定要设置该值,不然会导致运行一段时间后就不能查询
indices.fielddata.cache.size: 60%
# 索引的刷新频率,默认1秒,太小会造成索引频繁刷新,新的数据写入就慢了。(此参数的设置需要在写入性能和实时搜索中取平衡)通常在ELK场景中需要将值调大一些比如60s,在有_template的情况下,需要设置在应用的_template中才生效。
index.refresh_interval: 10s
# 服务监听地址,默认为127.0.0.1
network.host: 172.16.1.1
# 一启动就占用分配的内存,防止使用SWAP分区
bootstrap.memory_lock: true
# 默认当磁盘可用空间少于85%时,将不再分配新的索引在节点上,已存在的不影响,该选项就是取消85%的限制,生产配合磁盘监控即可
cluster.routing.allocation.disk.threshold_enabled: false

内存配置

默认Eelasticsearch分配内存时只使用1G,显然不切合实际。而要修改内存的分配值时,并不能通过配置文件方式修改,只能是通过JVM参数以环境变量的方式引入

1
2
export ES_HEAP_SIZE=4g
./elasticsearch

如果是单台机器完全跑Elasticsearch,官方建议是机器的一半内存。但最大不能超过32G的内存。