我有文章数据索引弹性如下。
{
"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你可以这样转换你的查询:
- 排序(按公司/Dec顺序)您从ES收到的回复。
- 只要求ES查询只返回ID字段和状态。
- 现在排序的用法将是它将对您的响应进行排序,如下所示:[第1 N个结果"deleted";状态,则N+1到M的结果为"草稿";然后M+1到K的结果为"已发布"。
这种技术的优点:
- 你将得到每个文档的标记id字段,你可以在你的应用程序中应用操作。
- 与Aggs查询相比,您的查询将是轻量级的。这样你也会得到每个文档的metdata艾克docId文档。
现在的缺点:
- 你总是要给你的页面大小一个高的上限,但你也可以玩计数在元数据。
- 可能需要更多的网络大小,因为它在每个文档中返回冗余状态。
我希望这个重新设计的查询可能对你有帮助。