Elasticsearch是一个分布式文档存储。Elastic没有将信息存储为以每列为属性的一行行数据,而是将复杂的数据结构序列化为json形式。当集群中有多个Elastic节点时,存储的文档分布在整个集群中,并且可以从任意的节点中即时获取信息。

      当一个文档被存储时,他会被索引,最多一秒后,就可以被搜索了。Elasitc使用倒排索引去支持快速的全文搜索。一个倒排索引列出在任意文档中出现的词,这些词后面会标明哪些文档中出现过这个词。

      索引可以被看作是文档的优化集合,每个文档都是字段的集合,字段是包含数据的键值对。通常情况下,Elastic可以用每个字段来索引一条数据。因为Elastic中的每个字段都有专一的,最优的数据结构来存储,比如文本字段存储于倒排索引,数字和地理字段存储于BKD树。Elastic可以使用每个字段的数据结构去聚合返回结果,这让Elastic运行地很快。

  Elastic还具有无模式的功能,这意味着可以在不显式指定如何处理文档中可能出现的每个字段下为文档编制索引。启用动态映射后,Elastic会自动检测并向索引添加新字段。这种默认行为使索引和浏览数据变得很容易-只需开始索引文档,Elastic将检测布尔值,浮点值,整数值,日期和字符串并将其映射到相应的Elastic类型。

  然而你肯定比Elastic更为了解你自己的数据,你可以定义规则去控制动态映射,控制yu是如何被存储和索引的。

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

  区分全文本字段和精确字符串域。

  执行特定语言的文本分析。

  为部分匹配优化字段。

  使用自定义日期类型。

  使用无法自动检测到的数据类型geo_point和geo_shape。

  为了不同的目的,以不同的方式索引同一字段通常是有用的。例如你可能想要索引一个字符串字段作为文本字段去进行全文搜索,还可能想要索引这个字段作为关键字进行排序聚合数据。或者,你可能想选择用多种语言分析器去处理用户输入的字符串。

  在索引过程中对full-test使用的分析链在搜索过程中同样使用着,当你搜索一个全文本字段时,这个询问经历着相同的分析过过程,直至条件被满足。

 

 

 

总结:

elastic底层存储的数据是json类型。

修改elasitc中的数据后,至多1秒后生效。

elastic用于搜索的每个字段都有相应最优的数据结构来存储。

elastic拥有强大的动态映射功能,开启后可以动态更改mapping。