es 介绍

Elasticsearch 是一个分布式文档储存中间件,它不会将信息储存为列数据行,而是储存已序列化为 JSON 文档的复杂数据结构。当你在一个集群中有多个节点时,

储存的文档分布在整个集群里面,并且立刻可以从任意节点去访问。

 

当文档被储存时,它将建立索引并且近实时(1s)被搜索。 Elasticsearch 使用一种被称为倒排索引的数据结构,该结构支持快速全文搜索。

在倒排索引里列出了所有文档中出现的每一个唯一单词并分别标识了每个单词在哪一个文档中。

 

索引可以被认为是文档的优化集合,每个文档索引都是字段的集合,这些字段是包含了数据的键值对。默认情况下,Elasticsearch 为每个字段中的所有数据建立倒排索引,

并且每个索引字段都有专门的优化数据结构。例如:文本字段在倒排索引里,数值和地理字段被储存在 BKD 树中。正是因为通过使用按字段数据结构组合,才使得 Elasticsearch 拥有如此快速的搜索能力。

Elasticsearch 具备默认模式的能力,这意味着文档建立索引的时候无需明确指定每个字段的数据类型。当启用动态映射时,Elasticsearch 自动检测并将新字段添加到索引。

该默认行为使索引和浏览数据变得容易,只要文档开始建立索引, Elasticsearch 就会检测布尔值,浮点数和整数值,日期和字符串,并将其映射到对应的数据类型中。
但是,最终你应该比程序更加了解自己的数据结构以及如何去使用它们。你可以定义动态映射的规则,并明确的定义 mapping 去更深度的控制字段的存储和索引方式。

定义你自己的 mapping 使你能够:

区分全文本字符串字段和精确值字符串字段
  执行特定的语言文本分词器
  使用自定义日期格式
  使用无法自动检测到的数据类型, 比如 geo_point and geo_shape
为不同的目的以不同的方式对同一字段建立索引通常很有用。例如,您可能希望将一个字符串字段索引为全文搜索的文本字段,以及作为排序或汇总数据的关键字字段。或者,您可能选择使用多个分词器来处理包含用户输入的字符串字段的内容。

在搜索时也会使用在索引期间应用于全文字段的分析链。当您查询全文字段时,对查询文本进行相同的分析,然后再在索引中查找术语。

 

posted on 2022-05-04 12:49  輪滑少年  阅读(170)  评论(0编辑  收藏  举报