Elasticsearch7.8官档精华(一:概述)

619 阅读2分钟

概述

文档和索引

Elasticsearch是一个分布式文档存储系统,会把数据序列化为JSON文档来存储。当Elasticsearch集群有多个节点时,存储的文档分布在不同节点上,并且可通过任意节点获取。

当文档被存储后,会在准实时(1秒内)被进行索引并可搜索。Elasticsearch使用的是倒排索引,支持全文快速搜索。倒排索引里包含文档中的每一个单词,和每个单词对应的文档有哪些。

一个索引是多个文档的优化集合,而每个文档是多个数据键值对的集合。Elasticsearch默认对每个字段都进行索引,每个字段都有自己最佳的数据结构。例如,text类型字段会存储在倒排索引,numeric和geo类型字段会存储在BKD树。使用合适的数据结构去聚合和查询对应类型的数据,这也是Elasticsearch速度快的原因。

Elasticsearch的文档在没有指出字段类型下仍然会被进行索引。当动态mapping开启时,Elasticsearch会自动检测并新增字段到索引中,会将booleans、floating point、integer values、dates和strings数据映射到合适的类型。

你可以自定义mapping,指定字段如何存储和索引。

  • 区分full-text(全文文本)和exact value(确切值)字符串
  • 执行特定的文本分析器
  • 优化用作部分匹配的字段
  • 使用自定义的日期转换
  • 使用不能被检测的geo_point和geo_shape数据类型

对同一字段根据不同场景使用不同的索引很有用,例如你会把一个string字段作为text类型供全文搜索,同时又把它作为keyword类型供排序或聚合查询数据。又或者,你可以使用多个语言分析器去处理string类型数据。

对full-text类型字段进行索引的分析链也同样作用在查询。当你查询full-text字段时,查询的文本参数会在用于查找索引前被分析。