当前位置:  首页>> 技术小册>> ElasticSearch零基础到实战

一、ElasticSearch简介

ElasticSearch是一个分布式的搜索和分析引擎,基于Apache Lucene搜索库构建而成,提供了分布式搜索、多租户支持、高可用性、实时搜索、全文搜索、地理信息搜索、自动分片等功能,被广泛应用于企业搜索、日志分析、安全分析、数据挖掘等领域。本文将介绍ElasticSearch的基本概念和名词解析,并通过示例代码演示如何使用Java API进行索引、查询等操作。

二、ElasticSearch基本概念

节点(Node)
节点是ElasticSearch集群中的一个实例,可以是一台物理机器、虚拟机、Docker容器等。每个节点都有一个唯一的名称和一个运行时状态,可以通过节点名称来访问节点。

集群(Cluster)
集群是由一个或多个节点组成的,共同协作完成数据的存储和检索工作。每个集群都有一个唯一的名称,节点通过这个名称来加入集群。在集群中,每个节点都有一个角色(Master或Data或Ingest)。

索引(Index)
索引是一组具有相似特征的文档的集合。每个索引都有一个名称,可以包含多个文档类型(Type),每个文档类型有一个唯一的名称。

文档(Document)
文档是ElasticSearch中的基本单位,可以是一个JSON对象或一个Map对象,保存在索引中。每个文档都有一个唯一的ID,用来标识文档。每个文档都属于一个索引和一个文档类型。

分片(Shard)
为了支持大规模的数据存储和检索,ElasticSearch将索引划分成多个分片(Shard),每个分片可以存储部分文档数据。分片可以分配到不同的节点上,实现数据的分布式存储和查询。每个索引至少包含一个分片,可以通过修改分片数来调整索引的性能和可用性。

副本(Replica)
为了提高集群的可用性和性能,ElasticSearch可以在多个节点上创建索引的副本(Replica)。每个副本是分片的一份完整拷贝,可以用来承载读取请求,提高查询性能和响应速度。副本的数量可以根据实际需求进行设置,副本的数量不能大于节点的数量减去主分片的数量。

映射(Mapping)
映射是定义索引中文档的结构和属性的过程,类似于关系型数据库的表结构。每个映射定义了文档类型的字段名称、类型、分词器、字段存储类型、字段索引类型等信息。映射可以手动创建,也可以通过自动检测机制创建。

查询(Query)
查询是指向ElasticSearch发送的搜索请求,包括结构化查询和全文查询两种类型。结构化查询通过指定查询语句中的字段名称和条件来搜索文档,支持多种查询语句类型,如term、match、range、bool、filter等。全文查询通过分词和词频计算来搜索文档,支持多种全文查询类型,如match、multi_match、common_terms、query_string等。

聚合(Aggregation)
聚合是一种统计和分析文档数据的方法,支持多种聚合类型,如统计、分组、求平均值、求最大值、求最小值等。聚合可以嵌套使用,支持多级聚合,可以通过聚合结果进行数据可视化和分析。

三、ElasticSearch名词解析

_source
_source是文档的源数据,包括文档中的所有字段和对应的值,存储在Lucene索引中。默认情况下,ElasticSearch会将所有文档的源数据存储在索引中,可以通过设置_source字段的值来禁止或限制源数据的存储。

_id
_id是文档的唯一标识符,可以手动指定或由系统自动生成。每个文档的_id必须是唯一的,用来标识文档。

_index
_index是文档所属的索引名称,用来标识文档所在的索引。

_type
_type是文档所属的类型名称,用来标识文档所在的文档类型。在ElasticSearch 7.x版本中已经被弃用,推荐使用_index代替。

_score
_score是文档的得分,表示文档与查询条件的匹配程度。得分越高,表示与查询条件的匹配程度越高。

_all
_all是包含了文档所有字段值的虚拟字段,可以用来进行全文搜索。在ElasticSearch 7.x版本中已经被弃用,推荐使用复合字段代替。

_mapping
_mapping是索引的映射信息,包括索引中的所有文档类型的字段定义和属性信息。可以通过查询_mapping API来获取索引的映射信息。

_bulk
_bulk是一种批量操作API,可以用来同时执行多个索引、更新、删除操作,提高操作效率。可以通过Bulk API来执行批量操作。


该分类下的相关小册推荐: