【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
相关推荐
枷锁—sha16 分钟前
【PortSwigger Academy】SQL 注入绕过登录 (Login Bypass)
数据库·sql·学习·安全·网络安全
汇智信科21 分钟前
智慧矿山和工业大数据解决方案“智能设备管理系统”
大数据·人工智能·工业大数据·智能矿山·汇智信科·智能设备管理系统
SEO_juper35 分钟前
AI+SEO全景决策指南:10大高价值方法、核心挑战与成本效益分析
人工智能·搜索引擎·seo·数字营销
阿里云大数据AI技术1 小时前
Hologres Dynamic Table 在淘天价格力的业务实践
大数据·人工智能·阿里云·hologres·增量刷新
逍遥德2 小时前
PostgreSQL 中唯一约束(UNIQUE CONSTRAINT) 和唯一索引(UNIQUE INDEX) 的核心区别
数据库·sql·postgresql·dba
工业甲酰苯胺2 小时前
字符串分割并展开成表格的SQL实现方法
数据库·sql
小句4 小时前
SQL中JOIN语法详解 GROUP BY语法详解
数据库·sql
OpenCSG4 小时前
新能源汽车行业经典案例 — 某新能源汽车 × OpenCSG
大数据·人工智能·汽车·客户案例·opencsg
外参财观4 小时前
流量变现的边界:携程金融按下暂停键后的冷思考
大数据·人工智能·金融
昊昊该干饭了4 小时前
一个真实查询需求如何从表设计走到高效 SQL
数据库·sql