# ---------------------------------- Cluster -----------------------------------
java
# Use a descriptive name for your cluster:
# 集群名称,用于定义哪些elasticsearch节点属同一个集群。
cluster.name: bigdata
# ------------------------------------ Node ------------------------------------
# 节点名称,用于惟一标识节点,不可重名
node.name: server3
# 一、如下列出了三种集群拓扑模式,以下:
# 若是想让节点不具有选举主节点的资格,只用来作数据存储节点。
node.master:
false
node.data:
true
# 二、若是想让节点成为主节点,且不存储任何数据,只做为集群协调者。
node.master:
true
node.data:
false
# 三、若是想让节点既不成为主节点,又不成为数据节点,那么可将他做为搜索器,从节点中获取数据,生成搜索结果等
node.master:
false
node.data:
false
# 这个配置限制了单机上能够开启的ES存储实例的个数,当咱们须要单机多实例,则须要把这个配置赋值2,或者更高。
#node.max_local_storage_nodes: 1
# ----------------------------------- Index ------------------------------------
# 设置索引的分片数,默认为5 "number_of_shards" 是索引建立后一次生成的,后续不可更改设置
index.number_of_shards: 5
# 设置索引的副本数,默认为1
index.number_of_replicas: 1
# 索引的刷新频率,默认1秒,过小会形成索引频繁刷新,新的数据写入就慢了。(此参数的设置须要在写入性能和实时搜索中取平衡)一般在ELK场景中须要将值调大一些好比60s,在有_template的状况下,须要设置在应用的_template中才生效。
index.refresh_interval: 120s
# ----------------------------------- Paths ------------------------------------
# 数据存储路径,能够设置多个路径用逗号分隔,有助于提升IO。 # path.data: /home/path1,/home/path2
path.data:
/home/elk/server3_data
# 日志文件路径
path.logs:
/var/log/elasticsearch
# 临时文件的路径
path.work:
/path/to/work
# ----------------------------------- Memory -------------------------------------
# 确保 ES_MIN_MEM 和 ES_MAX_MEM 环境变量设置为相同的值,以及机器有足够的内存分配给Elasticsearch
# 注意:内存也不是越大越好,通常64位机器,最大分配内存别才超过32G
# 当JVM开始写入交换空间时(swapping)ElasticSearch性能会低下,你应该保证它不会写入交换空间
# 设置这个属性为true来锁定内存,同时也要容许elasticsearch的进程能够锁住内存,linux下能够经过 `ulimit -l unlimited` 命令
bootstrap.mlockall:
true
# 节点用于 fielddata 的最大内存,若是 fielddata
# 达到该阈值,就会把旧数据交换出去。该参数能够设置百分比或者绝对值。默认设置是不限制,因此强烈建议设置该值,好比 10%。
indices.fielddata.cache.size: 50mb
# indices.fielddata.cache.expire 这个参数绝对绝对不要设置!
indices.breaker.fielddata.limit 默认值是JVM堆内存的60%,注意为了让设置正常生效,必定要确保 indices.breaker.fielddata.limit 的值
大于 indices.fielddata.cache.size 的值。不然的话,fielddata 大小一到 limit 阈值就报错,就永远道不了 size 阈值,没法触发对旧数据的交换任务了。
#------------------------------------ Network And HTTP -----------------------------
# 设置绑定的ip地址,能够是ipv4或ipv6的,默认为0.0.0.0
network.bind_host: 192.168.0.1
# 设置其它节点和该节点通讯的ip地址,若是不设置它会自动设置,值必须是个真实的ip地址
network.publish_host: 192.168.0.1
# 同时设置bind_host和publish_host上面两个参数
network.host: 192.168.0.1
# 设置集群中节点间通讯的tcp端口,默认是9300
transport.tcp.port: 9300
# 设置是否压缩tcp传输时的数据,默认为false,不压缩
transport.tcp.compress:
true
# 设置对外服务的http端口,默认为9200
http.port: 9200
# 设置请求内容的最大容量,默认100mb
http.max_content_length: 100mb
# ------------------------------------ Translog -------------------------------------
#当事务日志累积到多少条数据后flush一次。
index.translog.flush_threshold_ops: 50000
# --------------------------------- Discovery --------------------------------------
# 这个参数决定了要选举一个Master至少须要多少个节点,默认值是1,推荐设置为 N/2 + 1,N是集群中节点的数量,这样能够有效避免脑裂
discovery.zen.minimum_master_nodes: 1
# 在java里面GC是很常见的,但在GC时间比较长的时候。在默认配置下,节点会频繁失联。节点的失联又会致使数据频繁重传,甚至会致使整个集群基本不可用。
# discovery参数是用来作集群之间节点通讯的,默认超时时间是比较小的。咱们把参数适当调大,避免集群GC时间较长致使节点的丢失、失联。
discovery.zen.
ping
.timeout: 200s
discovery.zen.fd.ping_timeout: 200s
discovery.zen.fd.
ping
.interval: 30s
discovery.zen.fd.
ping
.retries: 6
# 设置集群中节点的探测列表,新加入集群的节点须要加入列表中才能被探测到。
discovery.zen.
ping
.unicast.hosts: [
"10.10.1.244:9300"
,]
# 是否打开广播自动发现节点,默认为true
discovery.zen.
ping
.multicast.enabled:
false
indices.store.throttle.
type
: merge
indices.store.throttle.max_bytes_per_sec: 100mb