1.1. 文档简介

未匹配的标注

Elasticsearch是一个分布式文档储存中间件,它不会将信息储存为列数据行,而是储存已序列化为JSON文档的复杂数据结构。当你在一个集群中有多个节点时,储存的文档分布在整个集群里面,并且立刻可以从任意节点去访问。

当文档被储存时,它将建立索引并且近实时(1s)被搜索。 Elasticsearch 使用一种被称为倒排索引的数据结构,该结构支持快速全文搜索。在倒排索引里列出了所有文档中出现的每一个唯一单词并分别标识了每个单词在哪一个文档中。

索引可以被认为是文档的优化集合,每个文档索引都是字段的集合,这些字段是包含了数据的键值对。默认情况下,Elasticsearch为每个字段中的所有数据建立倒排索引,并且每个索引字段都有专门的优化数据结构。例如:文本字段在倒排索引里,数值和地理字段被储存在BKD树中。正是因为通过使用按字段数据结构组合,才使得Elasticsearch拥有如此快速的搜索能力。

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

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

  • 区分全文本字符串字段和精确值字符串字段
  • 执行特定的语言文本分词器
  • 使用自定义日期格式
  • 使用无法自动检测到的数据类型, 比如geo_point and geo_shape

为不同的目的以不同的方式对同一字段建立索引通常很有用。例如,您可能希望将一个字符串字段索引为全文搜索的文本字段,以及作为排序或汇总数据的关键字字段。或者,您可能选择使用多个分词器来处理包含用户输入的字符串字段的内容。

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

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
CrazyZard
贡献者:9
讨论数量: 0
发起讨论 只看当前版本


暂无话题~