【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
相关推荐
远方160922 分钟前
21-Oracle 23 ai-Automatic SQL Plan Management(SPM)
数据库·sql·oracle
异常君34 分钟前
Java 应用中构建 Elasticsearch 多层次缓存:提升查询效率的实战方案
java·elasticsearch·架构
G皮T1 小时前
【Elasticsearch】一个图书馆的案例解释 Elasticsearch
大数据·elasticsearch·搜索引擎·全文检索·kibana·索引·index
cookqq2 小时前
mongodb源码分析session执行handleRequest命令find过程
数据库·sql·mongodb·nosql
岁忧2 小时前
LeetCode 高频 SQL 50 题(基础版)之 【高级字符串函数 / 正则表达式 / 子句】· 下
sql·leetcode·正则表达式
cdsmjt2 小时前
当文化遇见科技:探秘国际数字影像创新生态高地
大数据
写bug写bug2 小时前
SQL窗口函数原理和使用
后端·sql·mysql
T06205143 小时前
【实证分析】上市公司企业风险承担水平数据集(2000-2022年)
大数据·人工智能
G皮T3 小时前
【Elasticsearch】映射:Join 类型、Flattened 类型、多表关联设计
大数据·elasticsearch·搜索引擎·nested·join·多表关联·flattened