Elasticsearch 是一个基于 Lucene 的分布式搜索引擎,它提供了一个分布式的多用户搜索引擎,并且具有 RESTful Web 接口。Elasticsearch 可以快速地存储、搜索和分析海量数据。
1. Index
Elasticsearch 将数据存储在索引中,索引是 Elasticsearch 数据库的基本单位。索引中的文档必须属于相同的类型,但是不同类型的文档可以存储在不同的索引中。Elasticsearch 可以同时在多个索引中搜索。
2. Document
在 Elasticsearch 中,文档是最小的存储单位。文档是一个包含了一组字段(field)的 JSON 数据。每个文档都有一个唯一的 ID,可以使用这个 ID 进行检索。一个索引可以存储多个文档。
3. Type
在 Elasticsearch 5.x 版本中,一个索引只能包含一个类型。在 Elasticsearch 6.x 版本中,一个索引不能包含多个类型。在 Elasticsearch 7.x 版本中,类型已经被废弃,只能在兼容模式下使用。
4. Shard
Elasticsearch 将索引分成多个分片(shard),每个分片可以存储一部分文档。分片可以分布在多个节点上,从而实现分布式存储和搜索。分片的数量和分片存储的文档数可以在创建索引时设置。分片数量不能修改,但是可以通过重新索引来更改文档在分片之间的分配。
5. Replica
每个分片可以有零个或多个副本(replica)。副本可以提高搜索和可用性的性能。副本存储在不同的节点上,如果主分片不可用,则副本会自动成为主分片。副本数量可以在创建索引时设置,但是可以随时更改。
6. Node
Elasticsearch 是一个分布式搜索引擎,可以在多个节点上运行。每个节点是一个 Elasticsearch 进程,负责处理搜索请求、维护分片和副本等。一个节点可以属于多个集群。节点之间可以通过网络通信进行数据交换和协调。
7. Cluster
Elasticsearch 集群由一个或多个节点组成,可以共同处理搜索请求、维护分片和副本。每个集群有一个唯一的名称,节点可以通过名称加入集群。在一个集群中,每个分片都有一个主分片和零个或多个副本。当主分片不可用时,副本会自动成为主分片。
8. Query
Elasticsearch 使用查询语句来搜索文档。查询可以包含多个条件和选项,可以用于限制搜索结果、排序、过滤等。查询可以通过 RESTful API 进行发送,也可以使用 Elasticsearch 的查询 DSL 进行构建。查询 DSL 使用 JSON 格式构建,可以实现更复杂的查询功能。
9. Aggregation
聚合(aggregation)是 Elasticsearch 中用于分析数据的功能。聚合可以统计文档数量、计算平均值、最大值、最小值等等。聚合也可以通过 RESTful API 或查询 DSL 进行构建。
10. Mapping
映射(mapping)是 Elasticsearch 中用于定义索引中文档的结构和字段类型的功能。每个索引都有一个映射,用于确定文档的结构。映射可以定义文本、数字、日期等类型的字段,也可以定义嵌套的对象和数组类型的字段。
11. Analyzers
分析器(analyzer)是 Elasticsearch 中用于处理文本的功能。分析器可以将文本分成单词(token),并进行词干化、小写化、停用词过滤等操作。分析器可以通过映射进行配置,也可以在查询时进行动态配置。
12. Inverted Index
倒排索引(inverted index)是 Elasticsearch 中用于实现搜索功能的核心技术。倒排索引是一种数据结构,可以将文档中的每个单词(token)与包含该单词的文档建立关联。这样,在搜索时可以快速找到包含特定单词的文档。