ElasticSearch 的配置

2023-11-18

ElasticSearch 的配置

Elasticsearch 的配置同样遵循着“约定大于配置”的设计原则,用户可以选择使用群集更新设置API在正在运行的群集上更改大多数配置,也可以选择通过配置文件对Elasticsearch 进行配置。

一、配置文件位置信息

在ElasticSearch中有三个配置文件,分别为(默认位置 config目录下)elasticsearch.yml、jvm.options和log4j2.properties。如下图:
在这里插入图片描述
说明

  • elasticsearch.yml:配置ElasticSearch
  • jvm.options:配置ElasticSearch依赖的JVM信息
  • log4j2.properties:配置ElasticSearch日志记录中的各个属性

二、配置文件格式信息

ElasticSearch的配置文件为yaml。常见配置方式:

  • 层级方式

    path:
    	data:/var/lib/es
    	logs:/var/log/es
    
  • 单条方式

    	path.data:/var/lib/es
    	path.logs:/var/log/es
    
  • 引用环境变量方式

    node.name:${HOSTNAME}
    network.host:${ES_NETWORK_HOST}
    

三、配置JVM选项

一般情况下,Elasticsearch中很少修改JVM选项,最有可能更改配置堆的大小;
默认情况下,ElasticSearch配置JVM使用最小堆空间和最大堆空间大小均为1G

在ElasticSearch中,我们通过配置jvm.options文件中的xms(最小堆大小)和xmx(最大堆大小)两个参数来指定整个堆大小,一般情况下,两
者参数设置应为相等。

jvm.options配置文件说明

  • 以 “#”开头的行被视为注释并忽略

  • 以“-”开头的行被视为独立于本机JVM版本号的JVM选项

    -Xmx2g
    
  • 以“数字:”开头的行被视为一个JVM选项,该选项仅在本机JVM的版本号相互匹配时适用

    8:-Xmx2g
    
  • 以“数字-”开头的行被视为一个JVM选项,该选项仅在本机JVM的版本号大于或等于该数字版本号时才适用

    8-:-Xmx2g
    
  • 以“数字-数字”开头的行被视为一个JVM选项,该选项仅在本机JVM版本号在这两个数字版本号范围内时适用

    8-9:-Xmx2g
    
  • 空白行忽略即可,其他都被拒绝解析

四、安全配置

由于ElasticSearch中,部分设置信息是敏感而需要保密的,仅仅通过文件系统权限来保护这些信息是不够的,所以需要配置安全维度的信息。

  • ElasticSearch中提供了一个密钥库和相应的密钥库工具来管理密钥库中的配置。
  • 对密钥库所做的配置修改,皆在重启后有效
  • 安全配置需要在集群中的每个节点上指定,而且所有安全配置都是特定于节点的配置,所以每个节点上必须有相同的值。

安全配置常规操作

  • 创建密钥库

    创建密钥库(elasticsearch.keystore)命令(如下)。创建完后,可生成 elasticsearch.ymlelasticsearch.keystore两个文件

    bin/elasticsearch-keystore create
    
  • 查看密钥库中的设置列表

    查看密钥库中的设置列表命令(如下)

    bin/elasticsearch-keystore list
    
  • 添加字符串设置

    设置敏感的字符串命令(如下),执行完命令后,提示输入设置值。

    bin/elasticsearch-keystore add the.setting.name.to.set
    

    同时用户可以使用**–stdin标志在窗口stdin**中输出待设置的目标值。

    cat /file/containing/setting/value | bin/elasticsearch-keystore add --stdin the.setting.name.to.set
    
  • 添加文件设置

    用户可以使用添加文件命令添加敏感信息文件。配置时需确保将文件路径作为参数包含在设置名称之后。

    bin/elasticsearch-keystore add-file the.setting.name.to.set /path/example-file.json
    
  • 删除密钥设置

    从密钥库中删除设置命令(如下)

    bin/elasticsearch-keystore remove the.setting.name.to.remove
    
  • 可重新加载的安全配置

    由于配置elasticsearch.keystore文件,和配置elasticsearch.yml文件一样,对密钥库内容的更改不会自动应用于正在运行的elasticsearch节点上,所以需要重新启动节点才能重新读取设置;

    对于一些安全设置,我们可以标记位可重新加载,这样就可以在正在运行的节点上重新读取和应用;

    所有安全设置的值(无论是否可重新加载),在所有集群节点上必须相同更改所需的安全设置,才可使用命令(如下)进行重新加载、读取和应用。

    POST _nodes/reload_secure_settings
    

    该API接口将解密并重新读取每个集群节点上的整个密钥库,但只限于可重载的安全配置,其他设置更改需要在重启之后生效。

    当更改多个可重新加载的安全设置时,用户需要在每个集群节点上都修改所有配置,然后再调用重新加载安全配置API,不是在每次修改后就重
    新加载。
    

五、日志记录配置

在ElasticSearch中,使用log4j2来记录日志。所以我们可以通过log4j2.properties文件配置log4j2;

ElasticSearch中相关的三个公开属性信息:

  • $sys:es.logs.base_path:日志文件目录地址
  • $sys:es.logs.cluster_name:集群名称(默认配置中,用作日志文件名的前缀)
  • $sys:es.logs.node_name:节点名称(如果显式地设置了节点名称)

log4j2.properties文件的配置信息:

# 配置RollingFile的appender属性
appender.rolling.type = RollingFile 
appender.rolling.name = rolling 
# 日志信息将输出到 ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json中
appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json
# 使用json文件格式输出
appender.rolling.layout.type = ESJsonLayout
# type_name是填充ESJsonLayout的类型字段的标志,该字段可以让我们在解析不同类型的日志时更加简单
appender.rolling.layout.type_name = server
# 日志将会滚动输出到${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-
%i.json.gz中,日志文件会被压缩,且呈i递增状态
appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-
%d{yyyy-MM-dd}-%i.json.gz  
appender.rolling.policies.type = Policies
# 使用基于时间戳的新增日志滚动策略    
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
# 按天滚动新增日志    
appender.rolling.policies.time.interval = 1
# 在日期时间上对齐标准,而不是按每24小时来新增一次滚动日志文件    
appender.rolling.policies.time.modulate = true
# 按日志文件大小的策略来滚动新增日志文件    
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
# 每生成128MB的日志文件,就滚动新增一次日志    
appender.rolling.policies.size.size = 128MB 
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.fileIndex = nomax
# 每次新增滚动日志时执行删除日志文件动作   
appender.rolling.strategy.action.type = Delete
appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
# 仅当文件匹配时才删除日志文件
appender.rolling.strategy.action.condition.type = IfFileName
# 该配置仅用于删除日志文件    
appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-*
# 只有当日志目录下积累了较多日志时才删除    
appender.rolling.strategy.action.condition.nested_condition.type = IfAccumulatedFileSize
# 压缩日志的条件是日志文件大小达到2G    
appender.rolling.strategy.action.condition.nested_condition.exceeds = 2GB

配置日志记录级别方式:

  • 通过命令行配置

    适用于:当在单个节点临时调用一个问题(如在后启动时或在开发过程中)时

    命令如下:

    -e<name of logging hierarchy>=<level> 
    如 -e logger.org.elasticsearch.transport=trace
    
  • 通过elasticsearch.yml文件配置

    适用:当临时调用一个问题,但没有通过命令行启动ElasticSearch;或者希望在更持久的基础上调整日志级别时

    配置属性如下:

    <name of logging hierarchy>:<level>
    
  • 通过集群配置

    适用:当需要动态调整活动运行的集群上的日志级别时

    方法如下:

    PUT /_cluster/settings
    {
        "transient":{
    		"<name of logging hierarchy>":"<level>"
        }
    }
    
    如:
    PUT /_cluster/settings
    {
        "transient":{
    		"logger.org.elasticsearch.transport":"trace"
        }
    }
    
  • 通过log4j2.properties配置

    适用:当需要对日志程序进行细粒度的控制时(如将日志程序发送到另一个文件,或者以不同的方式管理日志程序)

    配置属性如下:

    logger.<unique_identifier>.name = <name of logging hierarchy>
    logger.<unique_identifier>.level = <level>
    
    如:
    logger.<unique_identifier>.name = logger.org.elasticsearch.transport
    logger.<unique_identifier>.level = trace
    

六、JSON日志格式

# 使用json文件格式输出
appender.rolling.layout.type = ESJsonLayout
# type_name是填充ESJsonLayout的类型字段的标志,该字段可以让我们在解析不同类型的日志时更加简单
appender.rolling.layout.type_name = server

日志默认为JSON格式打印,可通过如上两个属性进行配置,如需使用自定义布局,则配置appender.rolling.layout.type即可。
例如:
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}][%node_name]%marker %.-10000m%n
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ElasticSearch 的配置 的相关文章

随机推荐

  • Mac电脑花屏

    原因 GPU 加速导致 和电脑的独显有关 解决办法 打开谷歌浏览器 点击上图的三个点 选择设置 在高级设置中选择系统 关掉硬件加速模式
  • 十大优秀编程项目,让你的简历金光闪闪

    全文共3241字 预计学习时长6分钟 被问到如何学习编程时 最常听到的问题就是 有没有什么新项目的好点子 一些老套的答案有 做一个象棋游戏 或者 命令行界面 这些答案没有错 但这些例子不符合现代编程的需要 现代软件编写需要经常使用软件服务化
  • 【华为OD机试真题2023B卷 JAVA&JS】阿里巴巴找黄金宝箱(V)

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 阿里巴巴找黄金宝箱 V 知识点数组哈希表滑窗 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上 无意中发现了强盗集团的藏宝地 藏宝地
  • 尤克里里整理

    尤克里里 如何按弦 如何弹奏 带数字的四线谱 如何按弦 如何弹奏 带数字的四线谱 数字代表品格数 1就是1品 2就是2品 数字标记在几弦上面 就按住几弦的几品
  • 计算机毕设项目 大数据个性化音乐推荐算法分析

    文章目录 0 前言 1 研究目的 2 研究方法 2 1 传统推荐算法 2 2 基于LightGBM决策树模型的推荐算法 3 研究结论 0 前言 基于大数据个性化音乐推荐算法分析 提示 适合用于课程设计或毕业设计 工作量达标 源码开放 项目分
  • 告别卡顿,教你正确清理手机APP缓存垃圾,释放空间

    智能手机已经成为我们生活中不可或缺的重要工具 让我们随时随地保持联系 获取信息和娱乐 但是 使用过多的应用程序可能会导致手机变得缓慢并占用存储空间 这些应用程序产生大量的缓存和垃圾文件 如果不及时清理 将会影响手机的性能和速度 今天 我们将
  • 集团如何实现数字化转型?永洪BI助力由由集团

    随着 互联网 的边界不断拓宽 生活性服务业正驶入数字化转型快车道 中国信息通信研究院发布的 中国数字经济发展报告 2022 显示 2021年 我国数字经济发展取得新突破 数字经济规模达到45 5万亿元 占 GDP 比重达到39 8 三大产业
  • Chrome中安装扩展的三种方式

    chrome浏览器安装扩展有多种方式 请看以下介绍 1 从chrome网上应用商店安装 优雅法 在google chrome中打开chrome网上应用商店 https chrome google com webstore 搜索需要的扩展 在
  • 详解list.toArray(new String[0])

    List
  • 使用树莓派(raspberry pi)搭建网站(nginx+php+mysql+ddclient)

    标签 树莓派 raspberrypi php 网站 mysql 分类 Linux技术 最近在研究学习PHP 有时候想随时就学习 所以就决定搭建一个网站 随时可以进行学习 因为要24小时在线 要低功耗和安静 所以选择了树莓派 我们开始吧 ng
  • 四元素与旋转矩阵

    如何描述三维空间中刚体的旋转 是个有趣的问题 具体地说 就是刚体上的任意一个点P x y z 围绕过原点的轴 i j k 旋转 求旋转后的点P x y z 旋转矩阵 旋转矩阵乘以点P的齐次坐标 得到旋转后的点P 因此旋转矩阵可以描述旋转 x
  • 数据治理-数据质量-数据质量管理方法和工具

    常用质量管理工具 目前 在质量管理领域 有一系列常用的数据质量管理工具 主要分为传统的质量管理工具 新的质量管理工具和其他质量管理工具 传统的质量管理七大工具 传统的七种工具包含分层法 检查表 帕累托图 因果分析图 直方图 散布图 控制图
  • 2017最新整理深度学习神经网络算法全套

    https pan baidu com s 1cHGAv0 from groupmessage adapt pc fr ftw list path 2F
  • 基于node.js 实现百度ai人脸检测功能(api)

    基于node js 实现百度ai人脸检测功能 api 很有幸和老师同学们一起尝试学习百度ai的相关技术文档 自己做了一个很ez的人脸检测的小网页 和大家分享一下 百度ai技术文档 百度ai人脸检测技术文档 1 首先根据技术文档中的要求我们要
  • Object SLAM: An Object SLAM Framework for Association, Mapping, and High-Level Tasks 论文解读

    是一篇来自机器人顶刊T RO的文章 发表于2023 5 An Object SLAM Framework for Association Mapping and High Level Tasks 论文 An Object SLAM Fram
  • 问题十:关于application.loadlevel和SceneManager.LoadScene调用后新场景会变暗的问题

    根据百度贴吧的帖子 来到http answers unity3d com questions 919940 applicationloadlevel changes lighting for some rea html 这篇文章说他重新lo
  • Linux与Windows的常见差异

    Linux与Windows的常见差异 一 在Linux上顺理成章 换到Windows上就可能令人费解的事 二 一些Linux的使用技巧 三 一些Windows的使用技巧 一 在Linux上顺理成章 换到Windows上就可能令人费解的事 命
  • chatglm2外挂知识库问答的简单实现

    一 背景 大语言模型应用未来一定是开发热点 现在一个比较成功的应用是外挂知识库 相比chatgpt这个知识库比较庞大 效果比较好的接口 外挂知识库 大模型的方式可以在不损失太多效果的条件下获得数据安全 二 原理 现在比较流行的一个方案是la
  • 带宽和网速的关系是什么

    带宽和网速的关系是什么 带宽和网速的关系是 1Mbps 1024Kbps 1024 8KBps 128KB s 首先 运营商所说的200M宽带光纤 完整单位是200Mbps 而我们电脑中所说的下载速度单位是 MB 因此200M宽带下载速度并
  • ElasticSearch 的配置

    ElasticSearch 的配置 Elasticsearch 的配置同样遵循着 约定大于配置 的设计原则 用户可以选择使用群集更新设置API在正在运行的群集上更改大多数配置 也可以选择通过配置文件对Elasticsearch 进行配置 一