如何解决分组来自Elasticsearch的分组结果
我是Elasticsearch的超级傻瓜新手
elasticsearch上有很多产品。每个elasticsearch记录都有title,pid,product_group,color,size,qty...
等,还有更多字段
现在,当我执行请求时,我想让它按pid对结果进行分组,然后在响应的_group
部分中,我也希望对这些结果进行分组product_group
。
换句话说,如果我有
pid: 1,product_group: 1,size: 1
pid: 1,size: 2
pid: 1,product_group: 2,size: 2
pid: 2,product_group: 3,size: 1
pid: 2,product_group: 4,size: 2
我希望我的顶级搜索数组具有2个结果:pid1 1个,pid2 1个,然后在每个结果的内部,在json的_group
部分内部,我希望有2个结果每个:pid1将具有product_group 1和product_group 2的结果,而pid2将会具有product_group 3和product_group 4的_group结果。
这可能吗?
此刻,这就是我修改查询以基于pid将其分组的方式:
group: {field: "pid",collapse: true}
我真的不知道我是否希望崩溃是对还是错,而且我也不知道如何或者是否有可能像我所要求的那样进行第二层分组。不胜感激。
解决方法
最直接的方法是与孩子terms
aggs一起去:
{
"size": 0,"aggs": {
"by_pid": {
"terms": {
"field": "pid"
},"aggs": {
"by_group": {
"terms": {
"field": "product_group"
},"aggs": {
"underlying_docs": {
"top_hits": {}
}
}
}
}
}
}
}
请注意,最后一个aggs
组是可选的-如果您想知道哪些文档已存储到哪个特定乐队中,我将其放在此处。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。