Я пытаюсь агрегировать результаты по вложенному полю 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
?