【2024】elasticsearch的安装及使用建议

为了方便本节将使用docker部署Elasticsearch,以下简称es

Elasticsearch

1.基础理论部分

1.1.简单介绍一下es

Elasticsearch是一个开源的、分布式的、实时的搜索和分析引擎

可进行海量数据存储和集群管理,具有强大的数据搜索、数据分析能力

可用于网站搜索、日志管理、数据分析等应用

1.2.es的基本概念和相关术语

  • 集群(cluster):具有相同集群名称的节点会组成一个集群
  • 节点(node):用于存储集群的数据
  • 索引(index):索引是一个文档数据的集合
  • 类型(type):在索引中可存储不同类型的文档,新版本中一个索引对应一种类型
  • 文档(document):用json格式表示的一条数据
  • 分片(shard):创建索引时可指定分成多少分片存储
  • 复制(replication):一个分片可以有多个副本

使用关系型数据库比较:

关系型数据库 elasticsearch
数据库 索引
类型(废弃)
文档
字段
表结构 映射

2.elasticsearch安装部分

本次实验为docker部署

下载es镜像版本为7.17.20:

yaml 复制代码
docker pull elasticsearch:7.17.20

在运行容器前,我们先根据官方指导进行一些配置优化:

  • 修改vm.max_map_count不低于262144,分别进行永久生效和临时生效,这个参数含义是限制一个进程可以拥有的最大内存映射区域数。
bash 复制代码
# grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144
# sysctl -w vm.max_map_count=262144
  • 创建一个用于存储es数据的目录并授权,因为es默认使用uid:gid为1000:1000来管理
yaml 复制代码
mkdir /esdata/data -p
chown 1000:1000 /esdata/data
chmod 775 /esdata/data
  • 设置进程可以打开的最大文件描述符数量,运行容器的时候直接加上
yaml 复制代码
--ulimit nofile=65535:65535
  • 关闭swap分区
yaml 复制代码
swapoff -a
# 永久关闭则是修改/etc/fstab文件,讲涉及swap的行用#号注释
  • 设置堆大小,Xms为初始堆大小,Xmx为最大堆大小,设置大小根据自己资源设定
yaml 复制代码
-e ES_JAVA_OPTS="-Xms1g -Xmx1g"

运行es容器:

bash 复制代码
docker run --ulimit nofile=65535:65535 -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -v /esdata/data/:/usr/share/elasticsearch/data/ elasticsearch:7.17.20
  • discovery.type=single-node含义为单节点运行
  • 9200端口是HTTP RESTful接口端口,用于与Elasticsearch集群进行交互
  • 9300端口用于节点间通讯

如果需要还可以将配置文件映射到本地,方法为:
your_config_dir/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

安装部分内容到此结束,接下来记录一下es的基数内容。

3.elasticsearch配置及建议

es使用elasticsearch.yml文件作为配置文件

参数 功能
集群相关参数
cluster.name 集群名称
discovery.seed_hosts 指定集群节点用于节点发现
cluster.initial_master_nodes 定义初始主节点名称列表
节点相关参数
node.name 节点名称
node.master 是否允许节点成为主节点
node.data 是否允许该节点存储数据
路径参数
path.data 数据存储路径
path.logs 日志存储路径
网络参数
network.host 节点监听的IP地址

es设置堆大小配置文件jvm.options

参数 功能
-Xms 初始堆大小
-Xmx 最大堆大小

es日志参数配置log4j2.properties

  • 配置日志级别(如DEBUG、INFO、WARN、ERROR)。
  • 配置日志输出位置(如控制台、文件)。

配置建议:

  • 初始堆大小(Xms)和最大堆大小(Xmx)应相等
  • 堆大小不应超过物理内存的50%
  • 堆大小不应超过32GB
  • 1GB堆大小可处理48G-96G左右数据,可根据数据量配置
  • 单个分片的大小应控制在30G-50G之间

比如每个分片的大小为30GB,分片的数量为分片数量=数据总量/30GB

每个主分片都应该有副本,且存放在不同的节点,防止数据损坏。

比如有3个主分片,每个主分片有一个副本,可以这样写:

json 复制代码
"number_of_shards": 3,  
"number_of_replicas": 1
相关推荐
Ftrans14 分钟前
Ftrans数据摆渡系统 搭建安全便捷跨网文件传输通道
大数据·安全
学术会议44 分钟前
【火热征稿中-稳定检索】2025年计算机视觉、图像与数据管理国际会议 (CVIDM 2025)
大数据·人工智能·安全·计算机视觉
我来试试2 小时前
【超详细】Windows安装Npcap
大数据·python
小刘鸭!2 小时前
Flink如何处理迟到数据?
大数据·flink
不能放弃治疗3 小时前
第 28 章 - ES 源码篇 - Elasticsearch 启动与插件加载机制解析
elasticsearch
B站计算机毕业设计超人4 小时前
计算机毕业设计hadoop+spark+hive民宿推荐系统 酒店推荐系统 民宿价格预测 酒店价格 预测 机器学习 深度学习 Python爬虫 HDFS集群
大数据·python·机器学习·spark·课程设计·数据可视化·推荐算法
AIGC大时代4 小时前
如何判断一个学术论文是否具有真正的科研价值?ChatGPT如何提供帮助?
大数据·人工智能·物联网·chatgpt·aigc
沙滩de流沙4 小时前
Spark生态圈
大数据·分布式·spark·scala
Atlim6 小时前
flink cdc使用flink sql方式运行一直报Make sure a planner module is on the classpath
大数据·sql·flink
小刘鸭!6 小时前
Flink的多流转换(分流-侧输出流、合流-union、connect、join)
大数据·flink