---
title: Elasticsearch介绍
description: "Elasticsearch是一个分布式搜索引擎，具有高可伸缩性、高可靠性和易管理的特点。它基于Apache Lucene构建，支持全文检索、结构化检索和分析，并且能够将这三者结合起来。广泛用于日志管理、实时数据分析、全文搜索、搜推广等场景。"
url: https://www.hikunpeng.com/document/detail/zh/SRA/ecosystemEnable/elasticsearch/kunpeng_elasticsearch_02_0002.html
sourcePath: /source/zh/SRA/ecosystemEnable/elasticsearch/kunpeng_elasticsearch_02_0002.html
indexId: 7b41dc485243e59fb13a3e9c85e441d13fe38e387be503111f301dbbc6d0ed2d79
---
# Elasticsearch介绍

Elasticsearch是一个分布式搜索引擎，具有高可伸缩性、高可靠性和易管理的特点。它基于Apache Lucene构建，支持全文检索、结构化检索和分析，并且能够将这三者结合起来。广泛用于日志管理、实时数据分析、全文搜索、搜推广等场景。

Elasticsearch的主要特点包括：

- 分布式架构：支持水平扩展，能够处理大量数据。
- 实时搜索：数据写入后立即可搜索。
- 高可用性：通过数据复制和故障转移机制保证高可用性。
- 灵活的查询语言：支持丰富的查询和聚合操作。
- RESTful API：提供易于使用的RESTful API，支持多种编程语言。

更多关于Elasticsearch的信息请参见Elasticsearch官网(https://www.elastic.co/cn/elasticsearch)。

开发语言：Scala

一句话描述：分布式搜索引擎

开源协议：XXX

使用开源软件时需遵守开源软件的许可协议。


#### 建议的版本

建议使用版本为“Elasticsearch 8.10.1”。


#### 原理描述

Elasticsearch是一个基于Apache Lucene构建的开源分布式搜索和分析引擎，其核心设计旨在高效地存储、检索和分析海量数据。它采用分布式架构，将一个索引（Index）划分为多个分片（Shard），每个分片可以分布在不同节点上，从而实现了数据的水平扩展和负载均衡。为了确保高可用性，每个主分片可以配置一个或多个副本分片（Replica），副本分片提供故障恢复能力，并且承担部分查询请求以提升读取性能。

Elasticsearch实现快速搜索的关键在于其使用的倒排索引机制。倒排索引建立了一个从词项（Term）到包含该词项的文档ID列表的映射。当用户进行搜索时，Elasticsearch会先对查询语句进行分词处理，然后直接在倒排索引中查找这些词项对应的文档ID列表，最后通过合并这些列表并计算相关性得分来返回排序后的结果，这个过程避免了全表扫描，因此效率极高。

在数据写入方面，Elasticsearch提供了近实时的搜索体验。新写入的文档会先存储在内存缓冲区中，并同时记录到事务日志（Translog）中以保障数据安全。默认情况下，内存中的数据每秒会通过一次刷新（Refresh）操作生成一个新的不可变的段（Segment）并存入文件系统缓存，此时文档便变得可搜索，但尚未持久化到磁盘。定期的刷写（Flush）操作会将文件系统缓存中的段持久化到磁盘，并清空对应的Translog。此外，后台的段合并（Segment Merge）过程会将多个小段合并为更大、更高效的段，并清理已标记删除的文档，以优化存储和查询性能。

Elasticsearch的分布式特性还体现在其集群协调和容错能力上。集群通过特定的发现机制（如Zen Discovery）进行节点管理和主节点选举，主节点负责管理集群状态和分片分配。当有节点加入或离开集群时，Elasticsearch会自动进行数据重平衡（Rebalance），重新分配分片以确保数据均匀分布和系统稳定运行。这种设计使得Elasticsearch能够处理PB级别的结构化或非结构化数据，广泛应用于全文搜索、日志分析、实时监控等场景。
