Elasticsearch的配置学习笔记

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

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

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

image

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目录下的日志文件。

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/176988.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

navicat导入已有sql表过程

已知我有一个外部的sql表,如图: 想要将其导入navicat并运行。 看一下我的navicat, navicat里已有的数据库并没有library,所以需要建立一个同名的library数据库来存储library.sql文件。 具体步骤如下: 在“本地连接”…

pdf增强插件 Enfocus PitStop Pro 2022 mac中文版功能介绍

Enfocus PitStop Pro mac是一款 Acrobat 插件,主要用于 PDF 预检和编辑。这个软件可以帮助用户检查和修复 PDF 文件中的错误,例如字体问题、颜色设置、图像分辨率等。同时,Enfocus PitStop Pro 还提供了丰富的编辑工具,可以让用户…

CNVD-2021-27648:锐捷RG-UAC统一上网行为管理与审计系统信息泄露漏洞复现

文章目录 锐捷RG-UAC统一上网行为管理与审计系统信息泄露(CNVD-2021-27648)漏洞复现0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.复现 0x06 修复建议 锐捷RG-UAC统一上网行为管理与审计系统信息泄露(CNVD…

Linux组调度

为什么引入组调度可以参考这篇文章的讨论。核心原因是基础的调度算法都是基于任务的,如果用户A有10个任务,用户B只有1个任务,假设这些任务的优先级都相同,那么用户A得到的CPU时间将是用户B的10倍,这样从任务的角度看虽…

【Linux】进程替换|exec系列函数

文章目录 一、看一看单进程版的进程替换二、进程替换的原理三、多进程版——验证各种程序替换接口exec系列函数execlexeclpexecvexecvp tipsexecleexecve 四、总结 一、看一看单进程版的进程替换 #include<stdio.h> #include<unistd.h> #include<stdlib.h>i…

Hive函数

1. Hive 内置运算符 整体上&#xff0c;Hive 支持的运算符可以分为三大类&#xff1a;关系运算、算术运算、逻辑运算。 官方参考文档&#xff1a;LanguageManual UDF - Apache Hive - Apache Software Foundation 也可以使用下述方式查看运算符的使用方式&#xff1a; -- 显…

短视频矩阵seo系统源码搭建----技术定制化开发

一、需要遵循一下技术开发步骤&#xff1a; 1. 确定需求和功能&#xff1a;明确系统的主要目标和需要实现的功能&#xff0c;包括关键词研究、短视频制作、外链建设、数据分析、账号设置优化等方面。 2. 设计系统架构&#xff1a;根据需求和功能确定系统的架构&#xff0c;包…

openGauss Summit 2023 | Call for Sponsor、Speaker、Demo

数据库作为千行万业数据的基石&#xff0c;也是推动数字经济发展的核心。随着数字经济的蓬勃发展&#xff0c;数据库将迎来更加广阔的应用场景和更加迫切的需求。openGauss 社区旨在汇聚产、学、研、用多方力量&#xff0c;聚焦基础软件核心能力的构建&#xff0c;引领国内数据…

LeetCode - 232.用栈实现队列 225.用队列模拟实现栈 (C语言,配图)

目录 232.用栈实现队列 225.用队列模拟实现栈 注&#xff1a;本文是基于C语言实现的代码&#xff0c;所以栈和队列是在力扣上制造实现的&#xff0c;如果你使用C等语言&#xff0c;可以忽略前面相当大部分的代码。 在栈模拟实现栈和队列之前&#xff0c;我们先来复习一下栈和…

2023年数维杯国际大学生数学建模挑战赛

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 cs数模团队在数维杯前为大家提供了许多资料的内容呀&#xff0…

基于SSM的宠物综合服务平台的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

TikTok:传承文化多样性,扬播全球声音

在数字时代&#xff0c;社交媒体平台已经成为了传播文化多样性和全球声音的重要渠道。其中&#xff0c;TikTok无疑是最引人注目的之一。 这个短视频应用在短短几年内迅速崭露头角&#xff0c;吸引了全球数亿用户&#xff0c;成为一个独特的文化传媒工具&#xff0c;通过短视频…