Elasticsearch介绍

概述

Elasticsearch是一个基于Apache Lucene的搜索和数据分析工具。Elasticsearch使用Lucene作为其核心来实现所有索引和搜索的功能,它通过简单的RESTful API来屏蔽Lucene的复杂性,从而让全文搜索变得简单。

Elasticsearch的特点及优势如下:

架构

图-1 Elasticsearch组件架构

 

相关概念

代表集群,集群包含多个节点,其中有一个Master节点,Master节点通过选举产生,ES集群中的主从节点是针对集群内部而言的。Elasticsearch的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部而言的,因为从外部来看,Elasticsearch集群在逻辑上是个整体,与集群中任何一个节点通信,其效果都是等价的。

代表索引,用于存储Elasticsearch的数据,类似于关系型数据库的Database。是一个或多个分片分组在一起的逻辑空间。

代表索引分片,Elasticsearch可以把一个完整的索引分成多个分片,并分布到不同的节点上,构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

代表索引副本,Elasticsearch可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高Elasticsearch的查询效率,Elasticsearch会自动对搜索请求进行负载均衡。

代表文档,Elasticsearch存储的实体,是可以被索引的基本单位,相当于关系型数据库中的行。

代表字段,是组成文档的最小单位。相当于关系型数据库中的column

代表类型映射,用来约束字段的类型,可以根据数据自动创建。相当于数据库中的schema

代表数据恢复或数据重新分布,Elasticsearch在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

代表Elasticsearch索引快照的存储方式,Elasticsearch默认是先把索引存放到内存中,当内存满了时再持久化到本地磁盘。gateway对索引快照进行存储,当这个Elasticsearch集群关闭再重启时就会从gateway中读取索引备份数据。Elasticsearch支持多种类型的gateway,有本地文件系统(默认)、分布式文件系统,如HadoopHDFS

type代表文档类型,类似于关系型数据库中的表,用于区分不同的数据。需要注意的是,在Elasticsearch7.x版本中,一个索引只能有一个type且默认使用_doc作为索引的typeElasticsearch官方声明将在Elasticsearch8版本中彻底移除type

专有主节点的主要功能是对集群进行操作,例如创建或删除索引,跟踪哪些节点是集群的一部分,并决定哪些分片分配给相关的节点。稳定的主节点对集群健康非常重要。默认情况下集群任一节点都可能被选为主节点,索引数据和搜索查询等操作会占用大量的CPU、内存和IO资源。为了集群的稳定性,建议设置专有主节点,分离主节点和数据节点。

协调节点可以分担数据节点的CPU开销,从而提高处理性能和服务稳定性。如果您的业务是CPU密集型的业务,建议配置协调节点。

应用场景

分析搜索引擎Elasticsearch适用于以下场景:

1.      日志分析

2.      站内搜索