elasticsearch基础概念与集群部署

发布于:2025-08-14 ⋅ 阅读:(14) ⋅ 点赞:(0)

一. 引言:

        elasticsearch(简称 es)是一款基于 Lucene 的分布式开源搜索引擎,专注于实时全文检索、数据分析与存储,广泛应用于日志分析、电商搜索、监控告警等场景。以下将详细介绍其基础概念与集群部署流程。

二.基础概念:

    理解 ES 的核心概念是使用和部署集群的前提,这些概念与传统数据库有一定类比性,但也有其独特性:

 1. Document(文档):ES 中最小的数据单元,是一组键值对(类似 JSON 对象),用于存储具体的业务数据(如一条日志、一个商品信息)。采用 JSON 格式存储,结构灵活;每个文档有唯一的 _id(可手动指定或自动生成),用于唯一标识文档;文档属于某个索引,并被分配到集群的某个分片中。

 2. Index(索引):文档的集合(类似关系型数据库中的 “表”),用于存储具有相似结构的文档(如 “商品索引”“用户索引”)。索引名称必须小写,且不能包含特殊字符;索引在创建时可定义映射(Mapping),指定字段类型(文本、数字、日期等)及分析器。

3. shard(分片):索引的最小存储和处理单元,是 Lucene 的实例(一个独立的搜索引擎)。由于单节点存储和处理能力有限,ES 将索引数据拆分到多个分片,实现分布式存储和并行查询。分片分为主分片和副本分片。

4. Node(节点):运行 ES 进程的单个服务器(物理机 / 虚拟机 / 容器),是集群的基本组成单元(也可以单实例多节点,但生产环境不建议这么干)。 节点类型分为:

   a). 主节点:负责集群元数据管理(如索引创建、分片分配),维护集群状态(集群名称、节点列表、分片分布等)。

  b).  数据节点: 负责数据的存储(分片)、索引和查询,是集群的 “工作节点”。

  c).  协调(投票)节点:   接收客户端请求,分发任务到其他节点,汇总结果返回。默认所有节点都是协调节点,可通过 node.master: false 和 node.data: false 配置为专用协调节点;

5. cluster(集群):由多个节点组成的集合,节点通过相同的 cluster.name 加入集群.

三. 集群部署:

 集群模式建议为3个节点。具体部署如下:

 1. 环境准备:


#系统
linux 、 禁用 swap(ES 性能依赖内存,swap 会导致性能下降);

#硬件
每个节点至少 2 核 CPU、4GB 内存(生产环境建议 8 核 16GB+);
磁盘:SSD(提升 IO 性能),预留足够空间(根据数据量估算);

2.  用户配置: es 不允许 root 用户启动,需创建专用用户:

mkdir -p /data/elasticsearch
groupadd elasticsearch
useradd -g elasticsearch elasticsearch
chown -R elasticsearch:elasticsearch /data/elasticsearch -R

3. 下载安装包,部署:

su - elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-9.0.3-linux-aarch64.tar.gz
tar fxvz elasticsearch-9.0.3-linux-aarch64.tar.gz


vim /etc/sysctl.conf
vm.max_map_count=262144   #不修改会启动失败
sysctl -p

 4.  生成证书:

bin/elasticsearch-certutil ca
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

mkdir config/certs

cp elastic-*.p12 config/certs/
    
#需要将生成的证书copy到集群的所有节点。

 5. 修改配置文件:

cluster.name: test
node.name: node3
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
network.host: 10.0.73.255
http.port: 9200
discovery.seed_hosts: ["10.0.36.165:9300", "10.0.101.73:9300","10.0.73.255:9300"]
cluster.initial_master_nodes: ["node1", "node2", "node3"]
xpack.security.enabled: true
xpack.security.http.ssl:
  enabled: false
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/elastic-certificates.p12
  truststore.path: certs/elastic-certificates.p12



#其他节点,参考同配置

6. 配置用户密码:

bin/elasticsearch-reset-password -u elastic
This tool will reset the password of the [elastic] user to an autogenerated value.
The password will be printed in the console.
Please confirm that you would like to continue [y/N]y


Password for the [elastic] user successfully reset.
New value: PBW0*Yk1sdgsdgsdgTuS
启动服务: 
 bin/elasticsearch -d -p pid
三. 验证服务: 

 -------------------------------------------------------------------------------------

                         深耕运维行业多年,擅长运维体系建设,方案落地。欢迎交流!

                                                     V: ywjw996

                                                    《 运维经纬 》


网站公告

今日签到

点亮在社区的每一天
去签到