📅  最后修改于: 2023-12-03 14:40:57.422000             🧑  作者: Mango
Elasticsearch 是一款分布式开源搜索引擎,基于 Lucene 开发,能够通过分析搜索文本内容,快速的检索并返回相应结果。
在 Elasticsearch 中,文档是基本的信息存储单位。文档可以是任意 JSON 格式的数据,在 Elasticsearch 中,文档必须包含一个唯一的 ID,该 ID 将用于标识该文档。
索引是文档集合的区分之处,它类似于关系数据库中的表。索引是用于对文档进行存储、检索和分析的基本单元。一个索引可以包含多个文档,和关系型数据库类似,索引也可被看作是具有相同字段名称和数据类型的文档集的容器。
在 Elasticsearch 中,Type 在索引的基础上进一步分类数据。类型类似于关系型数据库中的格式或表中的列。在将数据存储到 Elasticsearch 中时,可以指定类型。其中,一个索引可以包含多种不同类型的文档。
Mapping 是文档建模的过程,类似于数据库中的模式。它描述了如何将文档的字段映射到底层存储中的存储类型(比如字符串、数字或日期)。Mapping 在索引级别上定义,每个索引可以有多个 Mapping。有多个 Mapping 会增加 Elasticsearch 的灵活性。
在 Elasticsearch 中,Query 是对文档的检索方式。对于每个搜索请求,Elasticsearch 都会对输入的搜索查询进行解析,然后对索引中的文档进行评分,按照评分的高低返回搜索结果。Query 分为两类:一是完全匹配,也就是说,这类查询只查询给定字段是否等于特定值,适用于精确查询;另一类是全文查询,它将会查找文档中的所有字段,适用于关键字搜索。
在 Elasticsearch 中,Aggregations 可以统计索引中的文档,从而更深入地了解数据。Aggregations 通过调用特定的指标来扫描文档,比如“sum”、”min”、”max”等。Aggregations 还可以通过使用嵌套聚合进行级联,从而使结果更加准确。
集群是多个 Elasticsearch 实例的集合。集群中的每个实例都是一个节点,具有与集群中其他实例相同的配置和功能。多个节点组成的集群可以加快搜索和分析速度,提高系统的可用性。
在 Elasticsearch 中,一个索引可以被分割为多个“分片”,每个分片可以存储索引的一部分数据。分片可以使 Elasticsearch 在每个节点上执行分布式搜索及聚合,并提高吞吐量。
在 Elasticsearch 中,备份分片称为“副本”,每个分片可以有多个副本。副本分散在集群中的各个节点上,可以增加系统的可用性,并在节点失败时自动起到备份作用。
通过本文,我们了解了 Elasticsearch 的基本概念,如文档、索引、映射、查询、聚合、集群、分片和副本,这对于初学者入门 Elasticsearch 有很大的帮助,也对于在生产环境中使用 Elasticsearch 的开发者有很大的指导作用。