Elasticsearch的配置学习笔记

文/朱季谦 Elasticsearch是一个基于Lucene的搜索服务器。它提供一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,Elasticsearch是用Java语言开发的。

关于Elasticsearch系列笔记,主要从Elasticsearch的配置、核心组件、架构设计、使用语法这四个方面来记录学习;

本学习总结主要依赖《Elasticsearch实战与原理解析》一书的读书笔记,我把自己阅读过程当中整理的读书笔记做成了一张脑图,上传至了我的GitHub

Elasticsearch的配置

Elasticsearch的配置比较重要有三个,分别是elasticsearch.yml,jvm.options,log4j2.properties,这些配置文件都默认放在/config/目录下。

  • elasticsearch.yml:用于配置Elasticsearch基本信息,主要包括集群、节点、ip、端口等;
  • jvm.options:配置Elasticsearch依赖的JVM信息,ES是Java写的,当然需要考虑堆大小的分配;
  • log4j2.properties:用于配置Elasticsearch日志记录中的各个属性;

elasticsearch.yml关键参数

#集群名称,默认是elasticsearch,用于区分同一网段下的不同集群
cluster.name: my-application
#集群当中的节点名称,用于区分同一个集群下的不同节点
node.name: node-1
#存储index索引数据的路径,可以存储到多个路径,例如:path.data: /temp/data1,/temp/data2,/temp/data3,
path.data: /temp/data
#日志文件的存储路径
path.logs: /temp/logs
#当前节点的ip地址,允许通过外部服务器访问本地ES服务:
network.host: 0.0.0.0
#该节点有机会成为master节点
node.master: true
#该节点能够存储数据
node.data: true

#######################设置head插件能够访问es###########
#设置可以跨域,默认为false
http.cors.enabled: true
#支持所有域名访问
http.cors.allow-origin: "*"
#跨域允许设置的头信息,默认为X-Requested-With,Content-Type,Content-Length
http.cors.allow-headers : X-Requested-With,Content-Type,Content-Length
#端口
http.port: 9250


#设置集群主机列表,每个值应采用host:port,可实现主动发起ping集群主机信息
discovery.zen.ping.unicast.hosts: ["host1","host2","host3"]
#该参数表示只有足够的master候选节点时,才可以选举出一个master,该参数的值为master候选节点数量/2+1
#例如:如果有3个master候选节点,100个数据节点。则quorum=3/2+1=2
discovery.zen.minimum_master_nodes: 2
#表示设置了节点与节点之间连接ping命令执行的超时时长。
discovery.zen.fd.ping_timeout: 100s
discovery.zen.ping.timeout: 100s
#主动关闭多播模式
discovery.zen.ping.multicast.enabled: false

#默认90%,超过阈值后,所有索引都被修改为只读不可写状态
cluster.routing.allocation.disk.watermark.flood_stage: 90%
#默认90%,超过阈值后,索引的分片将不会被分配到该主机
cluster.routing.allocation.disk.watermark.high: 90%

elasticsearch.yml配置当中,discovery.zen相关的参数设置,主要是用来实现集群当中节点自动发现机制的,存在多播模式与单播模式。

  • 多播模式:对某一个网络上的所有主机发送数据包。
  • 单播模式:对特定的主机进行数据传送。

在Elasticsearch中,发现机制默认被配置为使用单播模式,以防止节点无意中加入集群。

jvm.options配置信息

Elasticsearch官方中文文档上介绍道:“你几乎可以不去调整 Java 虚拟机 (JVM) 参数,如何非要做的话,你最有可能去修改heap size。”

也就是说,这个配置文件里,一般只需要关注堆大小的设置即可,因为每一个运行环境服务器都不一样,可以根据服务器具体情况来调整jvm.options里的堆大小。

#最小堆的值
-Xms1024m
#最大堆的值
-Xmx1024m
#表示老年代占用75%时就会触发垃圾回收
-XX:CMSInitiatingOccupancyFraction=75

设置规则一般如下:

  • 最小堆Xms与最大堆Xmx设置值相同,避免当堆大小不够时再进行动态调整出现不确定因素;

Elasticsearch性能调优与JVM性能调优类似,都是通过JVM参数来进行调整优化,至于如何能有效调整,后续我若在实践过程中涉及过,会补充这块的内容。

log4j2.properties配置信息

该配置是Elasticsearch日志记录中的各个属性设置,包括日志保存设置、日志保留天数、慢日志、日志滚动等。

比较需要关注的一条参数是:

#将日志滚动到路径后的数据里
appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.log.gz
#使用基于时间的滚动策略
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
# 每天滚动一次日志
appender.rolling.policies.time.interval = 1
# 日志文件每达到 1GB 大小进行一次滚动
appender.rolling.policies.size.size = 1GB

所谓滚动日志,就是将当天的日志整理成一个以某种各种命名(例如时间)的文件,可存储历史的日志文件记录。我们在服务器的log目录下,经常看到类似的历史日志被打包成压缩包形式,这类被打包成压缩包的历史日志文件,即为回滚日志。我们经常在mysql里听到过日志回滚,其实,回滚的,即是这些原来被回滚存放在log目录下的日志文件。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Elasticsearch学习笔记

    搜索包括查询多个分片,并将多个分片元信息合并,然后再根据元数据获取真正数据两个步骤。

    kinnylee
  • ElasticSearch 6.x 学习笔记:1.下载安装与配置

    1. 安装配置JDK 8 (1)下载并解压缩 [root@node1 ~]# tar -zxvf jdk-8u112-linux-x64.tar.gz -C /...

    程裕强
  • 学习笔记0528----Tomcat配置

    我们已经学过了LAMP和LNMP架构;针对的开发语言是PHP;可以说PHP是一门开发Web程序非常流行的语言;早期的比较流行的是asp,是在windows平台上...

    嘻哈记
  • 学习笔记0516----nginx配置

    在Nginx中也有默认虚拟主机,跟httpd类似,第一个被Nginx加载的虚拟主机就是默认主机,但和httpd不相同的地方是,它还有一个配置用来标记默认虚拟主机...

    嘻哈记
  • Redis 学习笔记 2.4 配置

    twowinter
  • ElasticSearch学习笔记1

    先看第一个问题,如果我们用数据来实现搜索功能,可能的语句就是对 string 建立索引,或者直接 like 关键字。带来的问题是什么?

    zhuanxu
  • ElasticSearch学习笔记2

    假设现在我们有3个node,6个shard,则每个node上分配2个shard,此时最多容忍1台机器挂了,因为2台机器有4个shard,能存放下3个primar...

    zhuanxu
  • Elasticsearch学习笔记 -- 1

    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsear...

    earthchen
  • Elasticsearch学习搜索的笔记

    1.普通查询(全文搜索) 查询name=Smith的文档数据 GET /megacorp/employee/_search { "query" : { ...

    苦咖啡
  • activiti学习笔记(四) 配置器

    activiti配置器 activiti配置器的作用        一般在构建流程实例的时候, 会进行初始化,配置器就是可以在获取了流程配置实例,以及初始化之后...

    cfs
  • Linux学习笔记之rsync配置

      Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘...

    Jetpropelledsnake21
  • 跟我学Spring Cloud(Finchley版)-26-使用Elasticsearch作为Zipkin的后端存储

    前文搭建的Zipkin Server是没有后端存储的——数据会存储在Zipkin的内存中。这一般不适合生产,本节来探讨如何将Zipkin中的数据持久化。

    用户1516716
  • ES(elasticsearch)学习笔记(1)

    硬件配置 CPU 8核 / 内存 16384MB 操作系统 LSB Version: :base-4.0-amd64:base-4.0-noarch...

    干货满满张哈希
  • javaWeb idea学习笔记(三)Servlet的配置

    当服务器接收到客户端浏览器的请求后,会解析请求的URL路径,获取访问的servlet资源路径

    逆回十六夜
  • ElasticSearch学习笔记(5)——SpringBoot整合ElasticSearch

    本节主要介绍SpringBoot与ElasticSearch的整合,并实现简单的CRUD。

    张申傲
  • Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

    对于ELK还不太熟悉的同学可以参考我前面的两篇文章ElasticSearch + Logstash + Kibana 搭建笔记、Log stash学习笔记(一)...

    大江小浪
  • Redis学习笔记01---配置文件

    代码改变世界-coding
  • 深度学习笔记|环境配置

    hello,大家好久不见,中期终于顺利结束了。最近又给自己来挖坑了,这次给大家带来的就是深度学习的笔记,这里没有复杂的算法推导,而是以代码为主,让大家也能通过深...

    罗罗攀
  • PyCharm学习笔记(一) 界面配置

    $ {MONTH_NAME_SHORT} - 月份名称的前3个字母。 示例:1月,2月等

    py3study

扫码关注云+社区

领取腾讯云代金券