【问题标题】:Field collapsing on collection收集时字段崩溃
【发布时间】:2015-12-07 09:22:11
【问题描述】:

假设我有一个非常简单的索引。 Blog postblog categories。一篇博客属于一个或多个类别。

我想为每个类别查找最后 3 个帖子。我怎样才能做到这一点 ?我在https://www.elastic.co/guide/en/elasticsearch/guide/current/top-hits.html 阅读了有关“字段折叠”的信息,但该示例指的是标量字段,我有一个集合。

一个文档可以是:

{ "title" : "My post",
  "categories" : [{ "tech" => "Technology", "professional" => "Professional"]
},
{ "title" : "My secondo post",
  "categories" : [{ "professional" => "Professional"]
},

【问题讨论】:

  • 您能否展示您在索引中的示例文档?
  • @Val 更新问题
  • 您的字段的mapping 是什么?

标签: elasticsearch lucene elastica nosql


【解决方案1】:

您只能聚合值,不能聚合键,因此第一步是简化您的 categories 字段。

如果您可以将 categories 简单地作为字符串列表进行索引(例如,仅您的类别 slug,而不是 slug => slug_title 对),那么您可以使用 Terms Aggregation 向您显示您的所有类别结果集,然后是嵌套的 Top Hits Aggregation 以显示按日期排序的前三个帖子。

我相信this example on the Top Hits Aggregation 页面完全符合您的要求(前提是您可以将类别索引为字符串列表)。

【讨论】:

  • 但此查询返回过去 3 天发布的帖子类别的聚合。我需要每个类别的最后 3 个已发布帖子的列表。
  • 上面更新了答案。
猜你喜欢
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多