【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
相关推荐
zfj3211 小时前
H2数据库源码学习+debug, 数据库 sql、数据库引擎、数据库存储从此不再神秘
java·数据库·sql·学习·数据库底层原理
IvanCodes4 小时前
十一、Hive JOIN 连接查询
大数据·hive
LabVIEW开发4 小时前
LabVIEW数据库使用说明
数据库·sql·labview知识
万山y6 小时前
es快速上手(从MySQL角度)
mysql·elasticsearch·jenkins
小飞敲代码6 小时前
【Hadoop 实战】Yarn 模式上传 HDFS 卡顿时 “No Route to Host“ 错误深度解析与解决方案
大数据·linux·运维·服务器·hadoop·分布式·hdfs
你的坚持终将美好,8 小时前
谷歌es插件elasticsearch-head.crx
大数据·elasticsearch·搜索引擎
小白的码BUG之路8 小时前
Elasticsearch-kibana索引操作
大数据·数据库·elasticsearch
QX_hao9 小时前
【Hadoop】--HA高可用搭建--3.2.2
大数据·hadoop·分布式
万山y9 小时前
## Docker 中 Elasticsearch 启动失败:日志文件权限问题排查与解决
elasticsearch·docker·jenkins
dianzouyou1234569 小时前
钉钉报销与金蝶付款单系统对接技术揭秘
大数据·数据库·钉钉