1.elasticsearch目录及其作用

bin

  • 存放ES启动、关闭等脚本文件

  • 存放执行文件,例如启动脚本、密钥工具等

config

  • ES的配置文件所在的目录,其中有三个主要的配置文件

  • elasticsearch.yml是用于ES的最主要的配置文件

  • jvm.options用于配置ES JVM设置

  • log4j2.properties用于配置ES 日志记录的属性

jdk

  • ES自带的JDK目录

data

  • 默认的索引数据存储位置,实际中一般需要自行更改

logs

  • 存储ES的运行日志

  • 默认的日志存放位置,实际中一般需要自行更改

lib

  • ES运行所需要的jar包目录

modules

  • 存储ES已安装的模块

plugins

  • 存储ES已安装的插件

2.elasticsearch.yml

  • elasticsearch的config文件夹里面有两个配置文 件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来记录日 志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了。下面主要讲解下elasticsearch.yml这个文件中可配置的东西。

  • 绿色背景为实际遇到的,白色背景为将来探索的。

cluster.name: ES

  • ES集群名称,同一个集群内的所有节点集群名称必须保持一致

  • 配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。

node.name: slave2

  • ES集群内的节点名称,同一个集群内的节点名称要具备唯一性

path.conf: /path/to/conf

  • 设置配置文件的存储路径,默认是es根目录下的config文件夹。

path.data: /path/to/data

  • ES是搜索引擎,会创建文档,建立索引,此路径是索引的存放目录.默认是es根目录下的data文件夹,可以指定多个存储位置,用逗号隔开,例: path.data:/path/to/data1,/path/to/data2

path.logs:/path/to/logs

  • elasticsearch专门的日志存储位置,默认是es根目录下的logs文件夹

path.plugins: /path/to/plugins

  • 设置插件的存放路径,默认是es根目录下的plugins文件夹

path.work: /path/to/work

  • 设置临时文件的存储路径,默认是es根目录下的work文件夹。

node.master: true

  • 允许节点是否可以成为一个master节点,ES是默认集群中的第一台机器成为master,如果这台机器停止就会重新选举

  • 主节点属性值

node.data: false

  • 允许该节点存储索引数据(默认开启)

  • 数据节点属性值

network.bind_host: 192.168.0.1

  • 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。

network.publish_host: 192.168.0.1

  • 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。

network.host: 192.168.0.1

  • es的HTTP端口和集群通信端口就会监听在此地址上

  • 这个参数是用来同时设置bind_host和publish_host上面两个参数。

index.number_of_shards: 5

  • 设置默认索引分片个数,默认为5片。

index.number_of_replicas: 1

  • 设置默认索引副本个数,默认为1个副本。

bootstrap.memory_lock: true

  • 在ES运行起来后锁定ES所能使用的堆内存大小,锁定内存大小一般为可用内存的一半左右;锁定内存后就不会使用交换分区。如果不打开此项,当系统物理内存空间不足,ES将使用交换分区,ES如果使用交换分区,那么ES的性能将会变得很差

  • 设置为true来锁住内存。因为当jvm开始swapping时es的效率 会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。 同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过`ulimit -l unlimited`命令。

http.enabled

  • 是否使用http协议对外提供服务,默认为true,开启。

gateway.type

  • gateway的类型,默认为local即为本地文件系统,可以设置为本地文件系统,分布式文件系统,hadoop的HDFS,和amazon的s3服务器,其它文件系统的设置方法下次再详细说。

gateway.recover_after_nodes

  • 设置集群中N个节点启动时进行数据恢复,默认为1。

gateway.recover_after_time: 5m

  • 设置初始化数据恢复进程的超时时间,默认是5分钟。

gateway.expected_nodes

  • 设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。

network.tcp.no_delay: true

  • 是否启用tcp无延迟,true为启用tcp不延迟,默认为false启用tcp延迟

truenetwork.tcp.keep_alive: true

  • 是否启用TCP保持活动状态,默认为true

network.tcp.reuse_address: true

  • 是否应该重复使用地址。默认true,在Windows机器上默认为false

network.tcp.send_buffer_size: 128mb

  • tcp发送缓冲区大小,默认不设置

network.tcp.receive_buffer_size: 128mb

  • tcp接收缓冲区大小,默认不设置

transport.tcp.port: 9301

  • Elasticsearch6.x版本,设置集群节点通信的TCP端口,默认就是9300

transport.port:9300

  • Elasticsearch7.x版本,集群之间通信的端口,若不指定默认:9300

transport.tcp.compress: true

  • 设置是否压缩TCP传输时的数据,默认为false

http.max_content_length: 200mb

  • 设置http请求内容的最大容量,默认是100mb

http.cors.enabled: true

  • 是否开启跨域访问

http.cors.allow-origin: “*”

  • 开启跨域访问后的地址限制,*表示无限制

http.port: 9201

  • 定义ES对外调用的http端口,默认是9200

discovery.zen.ping.unicast.hosts: [“127.0.0.1:9301″,”127.0.0.1:9302″,”127.0.0.1:9303”]

  • 在Elasticsearch7.0版本已被移除,配置错误。写入候选主节点的设备地址,来开启服务时就可以被选为主节点。默认主机列表只有127.0.0.1和IPV6的本机回环地址。上面是书写格式,discover意思为发现,zen是判定集群成员的协议,unicast是单播的意思,ES5.0版本之后只支持单播的方式来进行集群间的通信,hosts为主机

discovery.zen.minimum_master_nodes: 2

  • 在Elasticsearch7.0版本已被移除,配置无效,为了避免脑裂,集群的最少节点数量为,集群的总节点数量除以2加一

discovery.zen.ping.multicast.enabled: false

  • discovery.zen.ping.multicast.enabled: false

discovery.zen.ping.timeout: 3s

  • 设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。

discovery.zen.fd.ping_timeout: 120s

  • 在Elasticsearch7.0版本已被移除,配置无效。探测超时时间,默认是3秒,我们这里填120秒是为了防止网络不好的时候ES集群发生脑裂现象

discovery.zen.fd.ping_retries: 6

  • 在Elasticsearch7.0版本已被移除,配置无效。探测次数,如果每次探测90秒,连续探测超过六次,则认为节点该节点已脱离集群,默认为3次

discovery.zen.fd.ping_interval: 15s

  • 在Elasticsearch7.0版本已被移除,配置无效。节点每隔15秒向master发送一次心跳,证明自己和master还存活,默认为1秒太频繁

discovery.seed_hosts: [“127.0.0.1:9301″,”127.0.0.1:9302″,”127.0.0.1:9303”]

  • Elasticsearch7新增参数,写入候选主节点的设备地址,来开启服务时就可以被选为主节点,由discovery.zen.ping.unicast.hosts:参数改变而来

cluster.initial_master_nodes: [“127.0.0.1:9301″,”127.0.0.1:9302”]

  • Elasticsearch7新增参数,写入候选主节点的设备地址,来开启服务时就可以被选为主节点

cluster.fault_detection.leader_check.interval: 15s

  • Elasticsearch7新增参数,设置每个节点在选中的主节点的检查之间等待的时间。默认为1秒

discovery.cluster_formation_warning_timeout: 30s

  • Elasticsearch7新增参数,启动后30秒内,如果集群未形成,那么将会记录一条警告信息,警告信息未master not fount开始,默认为10秒

cluster.join.timeout: 30s

  • Elasticsearch7新增参数,节点发送请求加入集群后,在认为请求失败后,再次发送请求的等待时间,默认为60秒

cluster.publish.timeout: 90s

  • Elasticsearch7新增参数,设置主节点等待每个集群状态完全更新后发布到所有节点的时间,默认为30秒

cluster.routing.allocation.cluster_concurrent_rebalance: 32

  • 集群内同时启动的数据任务个数,默认是2个

cluster.routing.allocation.node_concurrent_recoveries: 32

  • 添加或删除节点及负载均衡时并发恢复的线程个数,默认4个

cluster.routing.allocation.node_initial_primaries_recoveries: 32

  • 初始化数据恢复时,并发恢复线程的个数,默认4个

indices.recovery.max_size_per_sec

  • 设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。

indices.recovery.concurrent_streams

  • 设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。

node.max_local_storage_nodes: 3

  • 最⼤集群节点数,为了避免脑裂,集群节点数最少为 半数+1

ingest.geoip.downloader.enabled

  • 此版本将GeoIp功能默认开启了采集。在默认的启动下是会去官网的默认地址下获取最新的Ip的GEO信息

reindex.remote.whitelist

  • 这个需要在新的集群上配置添加白名单,配置的是旧的ES集群地址