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

相关文章:
Elasticsearch的配置学习笔记
文/朱季谦 Elasticsearch是一个基于Lucene的搜索服务器。它提供一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,Elasticsearch是用Java语言开发的。 关于Elasticsearch系列笔记,主要从Elasticsearch的配置、核心组件、架构设计、使…...
LeetCode(25)验证回文串【双指针】【简单】
目录 1.题目2.答案3.提交结果截图 链接: 验证回文串 1.题目 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s&…...
Android设计模式--工厂模式
一,定义 工厂模式与Android 设计模式--单例模式-CSDN博客,Android设计模式--Builder建造者模式-CSDN博客,Android设计模式--原型模式-CSDN博客 一样,都是创建型设计模式。 工厂模式就是定义一个用于创建对象的接口,让…...
EasyExcel入门使用教程
文章目录 简介一、工程创建🎑二、读操作🎊二、写操作🎄总结 简介 数据导入导出意义 后台管理系统是管理、处理企业业务数据的重要工具,在这样的系统中,数据的导入和导出功能是非常重要的,其主要意义包括以下…...
Golang实现一个一维结构体,根据某个字段排序
package mainimport ("fmt""sort" )type Person struct {Name stringAge int }func main() {// 创建一个一维结构体切片people : []Person{{"Alice", 25},{"Bob", 30},{"Charlie", 20},{"David", 35},{"Eve…...
python语言实现背包问题动态规划
背包问题是一个经典的动态规划问题,实现方式如下: 假设有一个背包,容量为 W,有 n 个物品,每个物品有两个属性:体积 v 和价值 w。要求在不超过背包容量的情况下,选取一些物品放入背包࿰…...
将Python程序(.py)转换为Windows可执行文件(.exe)
python开发者向普通windows用户分享程序,要给程序加图形化的界面(传送门:这可能是最好玩的python GUI入门实例! http://www.jianshu.com/p/8abcf73adba3),并要将软件打包为可执行文件(.exe结尾),那如何将.py转为.exe ? 将.py转为.exe 第一步:安装pyinstaller(临时调用了国内豆…...
Oracle 查找非系统用户结合了10,11,12,19
oracle 12开始有了INHERITEDYES;字段来区分系统用户 select username from dba_users where INHERITEDYES; 对于12以下的版本,按created日期字段筛选会发现创建时间间隔比较大,好区分。 本人当前有个需求需要找出所有数据库的非系统用户,来…...
c++虚函数纯虚函数详解加代码解释
c虚函数纯虚函数详解加代码解释 一.概念:二.虚函数示例及解析:三.纯虚函数示例及解析:四.验证和实际使用及解析:1.子类没有对父类的函数重载,mian()函数调用,是直接返回父类的值2.子类对父类的函数重载&…...
kotlin retrofit
参考博客 【Android】【Kotlin】使用【Retrofit】基本使用 如何在kotlin中正确使用retrofit 将kotlin协程用于网络请求—完整实例,看这一篇就够了 Kotlin协程Retorfit网络请求框架封装...
Web 开发中 route 和 router 有什么区别?
什么是路由? 在 Web 开发中,会经常和路由打交道,可能有的同学并没有仔细思考过到底什么是路由。路由是根据用户请求的 URL 来确定返回给用户的内容或页面的技术,即将 HTTP 请求映射到相应的处理代码,使得用户能够通过…...
VBA技术资料MF83:将Word文档批量另存为PDF文件
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…...
通信原理板块——脉冲编码调制(PCM)
微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 1、脉冲编码调制PCM原理 将模拟信号…...
绕过类安全问题分析方法
什么是绕过 逻辑漏洞是指程序设计中逻辑不严密,使攻击者能篡改、绕过或中断程序,令其偏离开发人员预期的执行。 常见表现形式 1、接口(功能类)绕过:即接口或功能中通过某参数,绕过程序校验 2、流程类绕…...
基于STC12C5A60S2系列1T 8051单片的IIC总线器件数模芯片PCF8591实现数模转换应用
基于STC12C5A60S2系列1T 8051单片的IIC总线器件数模芯片PCF8591实现数模转换应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍IIC总线器件数模芯片PCF8591介绍通过按…...
2023年中国骨质疏松治疗仪发展趋势分析:小型且智能将成为产品优化方向[图]
骨质疏松治疗仪利用磁场镇静止痛、消肿消炎的治疗作用迅速缓解患者腰背疼痛等骨质疏松临床症状。同时利用磁场的磁-电效应产生的感生电势和感生电流,改善骨的代谢和骨重建,通过抑制破骨细胞、促进成骨细胞的活性来阻止骨量丢失、提高骨密度。 骨质疏松治…...
并发编程之生产者消费者模型
什么是生产者消费者模型 生产者消费者模型是多线程中一个比较典型的模型。 打个比方:你是一个客户,你去超市里买火腿肠。 这段话中的 "你"就是消费者, 那么给超市提供火腿肠的供货商就是生产者。超市呢?超市是不是被…...
Java要将字符串转换为Map
Java要将字符串转换为Map,可以使用以下方法: import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.lang.reflect...
2760. 最长奇偶子数组 --力扣 --JAVA
题目 给你一个下标从 0 开始的整数数组 nums 和一个整数 threshold 。 请你从 nums 的子数组中找出以下标 l 开头、下标 r 结尾 (0 < l < r < nums.length) 且满足以下条件的 最长子数组 : nums[l] % 2 0 对于范围 [l, r - 1] 内的所有下标 i ,…...
JVM——运行时数据区(程序计数器+栈)
目录 1.程序计数器2.栈Java虚拟机栈 - 栈帧的组成1.Java虚拟机栈-局部变量表3.Java虚拟机栈-操作数栈3.Java虚拟机栈-帧数据 3.Java虚拟机栈-栈内存溢出4.本地方法栈 ⚫ Java虚拟机在运行Java程序过程中管理的内存区域,称之为运行时数据区。 ⚫ 《Java虚拟机规范》中…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
用鸿蒙HarmonyOS5实现国际象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码,使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...
