【问题标题】:how does ElasticSearch store _source field and other meta fieldsElasticSearch 如何存储 _source 字段和其他元字段
【发布时间】:2016-02-20 18:28:59
【问题描述】:

请教几个关于ES索引结构的问题:

(1) _source是Lucene中的一个字段吗,如果是,Lucene是怎么存储的,会不会是Key-Value存储而不是倒排索引。

(2) ES _id 是 Lucene 中的一个字段,还是在其他 Key-Value 存储中。如果我使用 md5 作为我的 doc 的 id 并在我的 doc 中创建 md5 字段,哪个查询会更快,即搜索 _id 或搜索 md5 更快?

(3) ES _type 是不是Lucene 中的一个字段,如果是,为什么ES 中不同的_type 可以有相同的doc _id。 提前致谢!

【问题讨论】:

    标签: elasticsearch lucene


    【解决方案1】:

    (1) 存储包含原始 JSON 的_source field,以便可以获取它(通过get requestsscripts 等)。但是,它未编入索引,因此不可搜索。

    (3) 每个文档都有一个_type 和一个_id 字段。两者一起形成_uid field,其值为{type}#{id}_uid_type 字段都已编入索引,可用于查询、聚合、脚本和排序。 _uid 字段也是为什么相同的_id 可以在不同的_type 中使用的原因(即_uid 将始终是唯一的)。但是,_id 字段未编入索引,因为它的值可以从 _uid 字段派生。

    (2) 您可以检索文档by its _id,这总是比通过任何其他字段搜索文档要快,无论该字段是否为 MD5。不过,同样值得注意的是,在 ES 2.0 之前,cleverly pick the right IDs 对您的文档很重要。从 2.0 开始,它变成了less of a concern,你可以选择任何你喜欢的 ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多