1 数据输入:文档和索引
Posted 大军001
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1 数据输入:文档和索引相关的知识,希望对你有一定的参考价值。
原文地址:Data in: documents and indices | Elasticsearch Guide [8.1] | Elastic
ES是一个分布式的文档存储。代替存储列式数据行,ES存储复杂数据结构,内容已经被JSON文档序列化了。当你在一个集群中有多个ES节点的时候,存储的文档会被分布到整个集群中并且可以立刻被任何一个节点访问到。
当一个文档被存储的时候,它被索引了并且可以近实时(一秒以内)的检索到。ES使用一个称为倒排索引的数据结构,可以支持非常快的全文检索。一个倒排索引列出了出现在任何一个文档中的每一个唯一的词,并且可以识别出每一个词对应的所有的文档。
一个索引可以认为是一个被优化的文档集合,并且每一个文档都是一个字段集合,这个是KV存储去包含你的数据。默认的,ES索引了所有数据的每一个字段,并且每一个索引的数据都有一个专用的,优化的数据结构。例如,文本字段被存储在倒排索引中,另外数字类型和地理位置字段被存储在BKD数中。使用每一个字段对应的数据结构的这个能力可以去组装并且返回数据结果,这个也是使得ES如此快的原因之一了。
ES也有能力可以做到无模式的,这个意味着文档可以被索引不需要明确的特指如何处理发生这个文档中的每一个字段。当动态映射被启动的时候,ES会自动探测并且添加新的字段到索引上。这个默认的动作会让索引数据和搜索数据更简单--只需要开启索引文档,然后ES就会开始探测和映射booleans, floating point and integer values, dates, and strings这些数据类型到正确的ES数据类型上。
最终,然而,你比ES会更了解你的数据以及你想如何使用这些数据。你可以定义规则去控制动态映射,并且明确的定义映射去充分的控制这个字段是如何被存储和索引的。
定义你自己的映射可以让你:
- 区分全文字符串字段与明确的值的字符串字段
- 执行特定语言的文本分析
- 对于部分匹配进行优化字段
- 使用自定义的日期格式
- 使用数据类型,诸如像地理点和地理形状这种不能被自动探测到数据类型
它经常是有用的,对于不同的目的用相同的方式去索引相同的字段。例如,你可能想去索引一个字符串字段既为了全文搜索一个文本字段,又为了作为一个主键字去排序或者聚合你的数据。或者,你可能去选择使用不止一个语言解析器去执行包含用户输入的一个字符串字段。
这个解析链条,在索引期间会被应用到一个全文字段,同时也会被查询阶段使用。当你查询一个全文字段的时候,这个查询的文本在这个词在索引中被查出来之前,它经历了相同的解析过程。
以上是关于1 数据输入:文档和索引的主要内容,如果未能解决你的问题,请参考以下文章