我正在尝试通过categories
类型的嵌套字段Product
来汇总结果。
我有Product
类型的映射:
{
mappings: {
product: {
properties: {
id: { type: 'keyword' },
categories: {
type: 'nested',
properties: {
id: { type: 'keyword' },
title: { type: 'text' }
}
}
}
}
}
}
我想要实现的是以下产品:
[
{ id: '1', categories: [{ id: '1', title: 'A' }] },
{
id: '2',
categories: [
{ id: '1', title: 'A' },
{ id: '4', title: 'A-A' },
]
},
{
id: '3',
categories: [
{ id: '2', title: 'B' },
{ id: '5', title: 'B-A' }
]
},
{
id: '4',
categories: [
{ id: '2', title: 'B' },
{ id: '5', title: 'B-A' }
]
},
{ id: '5', categories: [{ id: '3', title: 'C' }] }
]
我需要返回按文档计数排序的categories
,但要考虑整个数组的值,而不仅要返回categories
中的一项。
[{id: '1', title: 'A'}]: Document count = 2
[{ id: '1', title: 'A' }, { id: '4', title: 'A-A' }]: Document count = 2
[{ id: '2', title: 'B' }, { id: '5', title: 'B-A' }]: Document count = 2
[{ id: '3', title: 'C' }]: Document count = 1
我尝试了以下查询,但它是按类别分组的,因此我需要将类别保持层次结构。
{
"aggs": {
"categories": {
"nested": {
"path": "categories"
},
"aggs": {
"ids": {
"terms": {
"field": "categories.id"
},
"aggs": {
"titles": {
"terms": {
"field": "categories.title"
}
}
}
}
}
}
}
}
有什么方法可以按整个categories
字段进行汇总?