Elasticsearch 配置详解


Posted in Java/Android onApril 19, 2022

一 前言

在elasticsearch\config目录下,有三个核心的配置文件:

  • elasticsearch.yml,es相关的配置。
  • jvm.options,Java jvm相关参数的配置。
  • log4j2.properties,日志相关的配置,因为es采用了log4j的日志框架。

这里以elasticsearch6.5.4版本为例,并且由于版本不同,配置也不太也一样,仅作参考!

二 elasticsearch.yml

2.1 Cluster

  • 配置集群名称,由多个es实例组成的集群,有一个共同的名称。
cluster.name: my-application
  • 集群端口设置。
transport.tcp.port: 9300
  • 防止同一个shard的主副本存在同一个物理机上。
cluster.routing.allocation.same_shard.host:true
  • 初始化数据恢复时,并发恢复线程的个数,默认是4个。
cluster.routing.allocation.node_initial_primaries_recoveries: 4
  • 添加删除节点或者负载均衡时并发恢复线程的个数。默认是4个。
cluster.routing.allocation.node_concurrent_recoveries: 4

2.2 Node

  • 节点名称配置,一个es实例其实是一个es进程,在集群中被称为节点。如果一个服务器上配置集群,各节点的名称不能重复。
node.name: node-1
  • 为节点添加自定义属性,
node.attr.rack: r1
  • 该节点是否有资格成为主节点,默认为true。
node.master: true
  • 设置节点是否存储数据。
node.data: true
  • 设置默认主分片的个数,默认为5片,需要说明的是,主分片一经分配则无法更改。
index.number_of_shards: 5
  • 设置默认复制分片的个数,默认一个主分片对应一个复制分片,需要说明的是,复制分片可以手动调整。
index.number_of_replicas: 1
  • 设置数据恢复时限制的带宽,默认0及不限制。
indices.recovery.max_size_per_ser: 0
  • 设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。
indices.recovery.concurrent_streams: 5
  • 设置数据恢复时限制的带宽,默认0及不限制。
indices.recovery.max_size_per_ser: 0
  • 设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。
indices.recovery.concurrent_streams: 5

2.3 Paths

  • 存储数据路径设置,多个路径以英文状态的逗号分隔,默认根目录下的conf目录。
path.data: /path/to/data
# path.data: /path/to/data1,/path/to/data1
  • 设置临时文件存储路径,默认是es目录下的work目录。
path.work: /path/to/work
  • 日志文件路径,默认为根目录下的logs目录。
path.logs: /path/to/logs
  • 设置日志文件的存储路径,默认是es目录下的logs目录。
path.logs: /path/to/logs
  • 设置插件的存放路径,默认是es目录下的plugins目录。
path.plugins: /path/to/plugins

2.4 Network

  • 为es实例绑定特定的IP地址。
network.host: 192.168.0.1

上面的设置可以拆分为两个参数。

network.bind_host: 192.168.0.1 	# 设置绑定的ip地址,ipv4或ipv6都可以
network.publish_host: 192.168.0.1  # 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址
  • 为es实例设置特定的端口,默认为9200端口。
http.port: 9200

2.5 Discovery

  • 设置是否打开多播发现节点,默认是true。
discovery.zen.ping.multicast.enabled: true
  • 配置es单播发现列表,在es启动时,通过这个列表发现别的es实例,从而加入集群。
discovery.zen.ping.unicast.hosts: ["host1", "host2"]
discovery.zen.ping.unicast.hosts: ["10.0.0.1", "10.0.0.3:9300", "10.0.0.6[9300-9400]"]
  • discovery.zen.minimum_master_nodes设置是告诉集群有多少个节点有资格成为主节点,一般的规则是集群节点数除以2(向下取整)再加一。比如3个节点集群要设置为2,这个试着是为了防止脑裂问题
  • 设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。
discovery.zen.ping.timeout: 3s

2.6 Memory

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

2.7 Gateway

  • 设置是否压缩tcp传输时的数据。默认是false不压缩。
transport.tcp.compress: true
  • 设置内容的最大容量,默认是100mb。
http.max_content_length: 100mb
  • 是否使用http协议对外提供服务。默认为true。
http.enabled: false
  • 设置gateway的类型,默认为本地文件系统,也可以设置分布式文件系统、Hadoop的HDFS或者AWS的都可以。
gateway.type: local
  • 在完全重新启动集群之后阻塞初始恢复,直到启动N个节点为止,详情参见Recovery
gateway.recover_after_nodes: 3
  • 设置初始化数据恢复进程的超时时间。默认是5分钟。
gateway.recover_after_time: 5m
  • 设置该集群中节点的数量,默认为2个,一旦这N个节点启动,就会立即进行数据恢复。
gateway.expected_nodes: 2

2.8 Various

  • 删除索引时需要显式名称。
action.destructive_requires_name: true

三 jvm.options

  • 设置jvm堆的大小,最大值和最小值,应该是一致的,并且应该根据你的物理内存决定。
-Xms1g     # 设置最小堆为1g
-Xmx1g		# 设置最大堆为1g

四 log4j2.properties

这个配置文件,我们一般不修改其配置。

以上就是Elasticsearch配置文件示例示范的详细内容!

Java/Android 相关文章推荐
Java并发编程之详解CyclicBarrier线程同步
Jun 23 Java/Android
idea搭建可运行Servlet的Web项目
Jun 26 Java/Android
简单总结SpringMVC拦截器的使用方法
Jun 28 Java/Android
Java常用函数式接口总结
Jun 29 Java/Android
Java Kafka 消费积压监控的示例代码
Jul 01 Java/Android
Java面试题冲刺第十九天--数据库(4)
Aug 07 Java/Android
SpringBoot整合Mybatis Generator自动生成代码
Aug 23 Java/Android
Java并发编程之原子性-Atomic的使用
Mar 16 Java/Android
Android基于Fresco实现圆角和圆形图片
Apr 01 Java/Android
Java 使用类型为Object的变量指向任意类型的对象
Apr 13 Java/Android
Android Studio实现带三角函数对数运算功能的高级计算器
May 20 Java/Android
Java实现字符串转为驼峰格式的方法详解
Jul 07 Java/Android
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
解决springboot druid数据库连接失败后一直重连的方法
Apr 19 #Java/Android
Android自定义双向滑动控件
Apr 19 #Java/Android
java高级用法JNA强大的Memory和Pointer
Apr 19 #Java/Android
Java后端 Dubbo retries 超时重试机制的解决方案
Apr 14 #Java/Android
Java数组详细介绍及相关工具类
Apr 14 #Java/Android
Java8利用Stream对列表进行去除重复的方法详解
Apr 14 #Java/Android
You might like
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
PHP实现图片旋转效果实例代码
2014/10/01 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
laravel实现按月或天或小时统计mysql数据的方法
2019/10/09 PHP
Apache站点配置SSL强制跳转443
2021/03/09 Servers
一些有关检查数据的JS代码
2006/09/07 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
解决vant中 tab栏遇到的坑 van-tabs
2020/11/04 Javascript
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
下载糗事百科的内容_python版
2008/12/07 Python
跟老齐学Python之不要红头文件(1)
2014/09/28 Python
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
python安装gdal的两种方法
2019/10/29 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
中国旅游网站:途牛旅游网
2019/09/29 全球购物
演讲稿的写法
2014/05/19 职场文书
人大调研汇报材料
2014/08/14 职场文书
青年志愿者活动方案
2014/08/17 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
护士年终考核评语
2014/12/31 职场文书
开票员岗位职责
2015/02/12 职场文书
留学推荐信中文范文
2015/03/26 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers