如何在elasticsearch中使用searchkick rails进行分组



我有文章数据索引弹性如下。

{
"id": 1011,
"title": "abcd",
"author": "author1"
"status": "published"
}

我现在想把所有文章id分组status

结果应该是这样的

{
"published": [1011, 1012, ....],
"draft": [2011],
"deleted": [3011]
}

NB:我尝试了正常的aggs (Article.search('*',aggs: [:status], load: false).aggs),它只是给我每个项目的计数,我想要每个项目的id,而不是

@Crazy Cat你可以这样转换你的查询:

  1. 排序(按公司/Dec顺序)您从ES收到的回复。
  2. 只要求ES查询只返回ID字段和状态。
  3. 现在排序的用法将是它将对您的响应进行排序,如下所示:[第1 N个结果"deleted";状态,则N+1到M的结果为"草稿";然后M+1到K的结果为"已发布"。

这种技术的优点:

  1. 你将得到每个文档的标记id字段,你可以在你的应用程序中应用操作。
  2. 与Aggs查询相比,您的查询将是轻量级的。这样你也会得到每个文档的metdata艾克docId文档。

现在的缺点:

  1. 你总是要给你的页面大小一个高的上限,但你也可以玩计数在元数据。
  2. 可能需要更多的网络大小,因为它在每个文档中返回冗余状态。

我希望这个重新设计的查询可能对你有帮助。

相关内容

  • 没有找到相关文章

最新更新