2.es的数据结构

es是一个分布式文档存储仓库。es把数据都存储成了json数据格式。在es集群里,你可以有多个节点,数据会跨节点存储,同时也能迅速查询到。

一旦一个文档存储好了,他就会被缓存。es采用了倒排索引的方式来支持快速的全文本查询。一个倒排索引会例举文本里每一个独一无二的词。

一个index可以理解成一个优化了的文档集合,每个文档都是字段的集合。默认情况下,es缓存所有字段,并且每个字段都有分析,优化后的数据结构。比如文本字段以倒排索引的方式存储,数字和geo(地理位置)字段以block kd tree的结构存储。

es也可以不必在乎文档的数据类型,这意味着,可以动态地为文档生成新的字段用于索引。

根本上来说,你越了解你的数据结构,你越能自定义规则去控制动态映射文档的字段。

定义你自己的映射可以让你:

  • 把确切的字段和全文本查询区分开
  • 执行特定语言的分析
  • 优化字段索引
  • 使用自定义的时间格式

为了不同目的用不同的方式对相同的字段去做索引是很有用的。比如拿一个字符串字段既是全文本的的索引,又是聚合字段的关键字。或者选择不只一种的语言分析器去处理字符串。

应用到全文本的分析链在缓存期也在运行。当你查询一个全文本字段,也会在在搜索引擎里执行分析。