1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
| # ======================== Elasticsearch Configuration ========================= #
# Before you set out to tweak and tune the configuration, make sure you # understand what are you trying to accomplish and the consequences. #
# the most important settings you may want to configure for a production cluster. #
# https://www.elastic.co/guide/en/elasticsearch/reference/index.html #
#
# 配置es的集群名称,默认为elasticsearch。es会自动发现在同一网段下的es集群,如果在同一网段下有多个集群,可以用此属性来区分不同的集群。 cluster.name: elasticsearch #
#
# 节点名称 node.name: node-master #
node.master: true #
node.data: true #
# node.max_local_storage_nodes: 1 #
#
#node.attr.rack: r1 #
# 设置索引的分片数,默认为5 #index.number_of_shards: 5
# 设置索引的副本数,默认为1: #index.number_of_replicas: 1
# 配置文件中提到的最佳实践是,如果服务器够多,可以将分片提高,尽量将数据平均分布到大集群中去 # 同时,如果增加副本数量可以有效的提高搜索性能 # 需要注意的是,"number_of_shards" 是索引创建后一次生成的,后续不可更改设置 # "number_of_replicas" 是可以通过API去实时修改设置的
# ----------------------------------- Paths ------------------------------------ #
# 设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开,如 path.data: /path/to/data1,/path/to/data2 #path.data: /path/to/data #
# 设置配置文件的存储路径,默认是es根目录下的config文件夹。 #path.conf: /path/to/conf #
# 设置日志文件的存储路径,默认是es根目录下的logs文件夹。 #path.logs: /path/to/logs #
# 设置临时文件的存储路径,默认是es根目录下的work文件夹。 #path.work: /path/to/work #
# 设置插件的存放路径,默认是es根目录下的plugins文件夹。 #path.plugins: /path/to/plugins #
#
# 设置为true来锁住内存。因为当jvm开始swapping时es的效率会降低,所以要保证它不swap。 # 可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。 # 同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过`ulimit -l unlimited`命令。 #bootstrap.memory_lock: true #
# on the system and that the owner of the process is allowed to use this # limit. #
#
# es有很多种方式来缓存其内部与索引有关的数据.其中包括filter cache
# filter cache部分: # filter cache是用来缓存filters的结果的.默认的cache type是node type. # node type的机制是所有的索引内部的分片共享filter cache.node type采用的方式是LRU方式. # 即:当缓存达到了某个临界值之后,es会将最近没有使用的数据清除出filter cache.使让新的数据进入es.
# 这个临界值的设置方法如下:indices.cache.filter.size 值类型:eg.:512mb 20%。默认的值是10%。
# out of memory错误避免过于频繁的查询时集群假死 # 1.设置es的缓存类型为Soft Reference,它的主要特点是据有较强的引用功能. # 只有当内存不够的时候,才进行回收这类内存,因此在内存足够的时候,它们通常不被回收. # 另外,这些引用对象还能保证在Java抛出OutOfMemory异常之前,被设置为null. # 它可以用于实现一些常用图片的缓存,实现Cache的功能,保证最大限度的使用内存而不引起OutOfMemory. # 在es的配置文件加上index.cache.field.type: soft即可.
# 2.设置es最大缓存数据条数和缓存失效时间,通过设置index.cache.field.max_size: 50000把缓存field的最大值设置为50000, # 设置index.cache.field.expire: 10m把过期时间设置成10分钟. # index.cache.field.max_size: 50000 # index.cache.field.expire: 10m # index.cache.field.type: soft
# field data部分&&circuit breaker部分: # 用于fielddata缓存的内存数量,主要用于当使用排序,faceting操作时,elasticsearch会将一些热点数据加载到内存中来提供给客户端访问, # 但是这种缓存是比较珍贵的,所以对它进行合理的设置.
# 可以使用值:eg:50mb 或者 30%(节点 node heap内存量),默认是:unbounded # field的超时时间.默认是-1,可以设置的值类型: 5m
# circuit breaker部分: # 断路器是elasticsearch为了防止内存溢出的一种操作,每一种circuit breaker都可以指定一个内存界限触发此操作, # 这种circuit breaker的设定有一个最高级别的设定:indices.breaker.total.limit 默认值是JVM heap的70%. # 当内存达到这个数量的时候会触发内存回收。
# 另外还有两组子设置: #indices.breaker.fielddata.limit:当系统发现fielddata的数量达到一定数量时会触发内存回收.默认值是JVM heap的70% #indices.breaker.fielddata.overhead:在系统要加载fielddata时会预估,发现要加载进内存的值超过limit * overhead时会进行进行内存回收.默认是1.03 #indices.breaker.request.limit:这种断路器是elasticsearch为了防止OOM(内存溢出),在每次请求数据时设定了一个固定的内存数量.默认值是40% #indices.breaker.request.overhead:同上,也是elasticsearch在发送请求时设定的一个预估系数,用来防止内存溢出.默认值是1
# Translog部分: # 每一个分片(shard)都有一个transaction log或者是与它有关的预写日志,(write log), # 在es进行索引(index)或者删除(delete)操作时会将没有提交的数据记录在translog之中, # 当进行flush 操作的时候会将tranlog中的数据发送给Lucene进行相关的操作.一次flush操作的发生基于如下的几个配置 #index.translog.flush_threshold_ops:当发生多少次操作时进行一次flush.默认是 unlimited #flush_threshold_size:当translog的大小达到此值时会进行一次flush操作.默认是512mb #index.translog.flush_threshold_period:在指定的时间间隔内如果没有进行flush操作,会进行一次强制flush操作.默认是30m #index.translog.interval:多少时间间隔内会检查一次translog,来进行一次flush操作.es会随机的在这个值到这个值的2倍大小之间进行一次操作,默认是5s #index.gateway.local.sync:多少时间进行一次的写磁盘操作,默认是5s # 以上的translog配置都可以通过API进行动态的设置 #
#
# 设置本机器绑定的监听ip地址,默认为0.0.0.0。 network.host: 127.0.0.1 #
# 设置对外服务的http端口,默认为9200。 http.port: 9200 #
# http.max_content_length: 100mb #
# http.enabled: false #
transport.tcp.port: 9300 #
# transport.tcp.compress: false #
#
#
# The default list of hosts is ["127.0.0.1", "[::1]"] # 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点,默认的通讯端口是9300。 discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3[portX-portY]"] #
# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4) #discovery.zen.minimum_master_nodes: 1 #
#discovery.zen.ping.timeout: 3s #
# discovery.zen.ping.multicast.enabled: false #
#
#
# 设置集群中N个节点启动时进行数据恢复,默认为3。 #gateway.recover_after_nodes: 3 #
#gateway.type: local #
#gateway.recover_after_time: 5m #
#gateway.expected_nodes: 2 #
#
#
# 设置一个节点的并行恢复数 # 1.初始化数据恢复时,并发恢复线程的个数,默认为4 # cluster.routing.allocation.node_initial_primaries_recoveries: 4
# 2.添加删除节点或负载均衡时并发恢复线程的个数,默认为2 # cluster.routing.allocation.node_concurrent_recoveries: 2
# 设置恢复时的吞吐量(例如:100mb,默认为0无限制.如果机器还有其他业务在跑的话还是限制一下的好) # indices.recovery.max_bytes_per_sec: 20mb
# 设置来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5 # indices.recovery.concurrent_streams: 5 # 注意: 合理的设置以上参数能有效的提高集群节点的数据恢复以及初始化速度 #
#
#
# 如果启用了 HTTP 端口,开启跨域访问支持,默认为false http.cors.enabled: true # 如果 http.cors.enabled 的值为 true,那么该属性会指定访问允许的域名地址,(允许所有域名)以上使用正则 http.cors.allow-origin: /.*/
|