ES《 一》

数据在:文档和索引
Elasticsearch是一个分布式文档存储。Elasticsearch不是将信息存储为一列列的数据,而是将复杂的数据结构序列化为JSON文档。当你在一个集群中拥有多个Elasticsearch节点时,存储的文档分布在整个集群中,可以从任何节点立即访问。

当一个文档被存储时,它被索引并可在近乎实时的情况下进行完全搜索--在1秒之内。Elasticsearch使用一种叫做倒置索引的数据结构,支持非常快速的全文搜索。倒置索引列出了出现在任何文档中的每一个独特的词,并识别每个词出现在所有的文档中。

索引可以被认为是一个优化的文档集合,每个文档是一个字段的集合,也就是包含你的数据的键值对。默认情况下,Elasticsearch对每个字段的所有数据进行索引,每个被索引的字段都有一个专门的、优化的数据结构。例如,文本字段被存储在倒置索引中,数字和地理字段被存储在BKD树中。使用每个字段的数据结构来组合和返回搜索结果的能力是Elasticsearch如此快速的原因。

Elasticsearch还具有无模式的能力,这意味着可以对文档进行索引,而无需明确指定如何处理文档中可能出现的每个不同字段。当启用动态映射时,Elasticsearch会自动检测并添加新的字段到索引中。这种默认行为使得索引和探索你的数据变得很容易--只要开始索引文档,Elasticsearch就会检测并将布尔值、浮点和整数值、日期和字符串映射到适当的Elasticsearch数据类型。

然而,最终,你比Elasticsearch更了解你的数据以及你想如何使用它。你可以定义规则来控制动态映射,明确定义映射来完全控制字段的存储和索引方式。

定义你自己的映射使你能够。

区分全文字段和精确值字段
进行特定语言的文本分析
优化部分匹配的字段
使用自定义的日期格式
使用不能自动检测的数据类型,如geo_point和geo_shape。
为不同的目的以不同的方式对同一字段进行索引往往是有用的。例如,你可能想把一个字符串字段的索引既作为全文搜索的文本字段,又作为排序或聚合数据的关键词字段。或者,你可能选择使用一个以上的语言分析器来处理一个包含用户输入的字符串字段的内容。

在索引期间应用于全文字段的分析链也会在搜索时使用。当你查询一个全文字段时,在索引中查找术语之前,查询文本会经历同样的分析。 使用www.DeepL.com/Translator翻译(免费版)

posted @ 2022-10-07 15:20  风在何方  阅读(68)  评论(0编辑  收藏  举报