У нас есть аспекты, показывающие количество результатов, которые будут отображаться при выборе фильтров (и их объединении). Что-то вроде этого:
До того, как мы представили вложенные объекты, для этого подошло бы следующее:
GET /x_v1/_search/
{
"size": 0,
"aggs": {
"FilteredDescriptiveFeatures": {
"filter": {
"bool": {
"must": [
{
"terms": {
"breadcrumbs.categoryIds": [
"category"
]
}
},
{
"terms": {
"products.sterile": [
"0"
]
}
}
]
}
},
"aggs": {
"DescriptiveFeatures": {
"terms": {
"field": "products.descriptiveFeatures",
"size": 1000
}
}
}
}
}
}
Это дает результат:
"aggregations": {
"FilteredDescriptiveFeatures": {
"doc_count": 280,
"DescriptiveFeatures": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "somekey",
"doc_count": 42
},
Однако нам нужно было сделать products
вложенным объектом, и в настоящее время я пытаюсь переписать приведенное выше, чтобы оно работало с этим изменением. Моя попытка выглядит следующим образом. Однако это не дает правильного результата и, похоже, неправильно подключено к фильтру.
GET /x_v2/_search/
{
"size": 0,
"aggs": {
"FilteredDescriptiveFeatures": {
"filter": {
"bool": {
"must": [
{
"terms": {
"breadcrumbs.categoryIds": [
"category"
]
}
},
{
"nested": {
"path": "products",
"query": {
"terms": {
"products.sterile": [
"0"
]
}
}
}
}
]
}
},
"aggs": {
"nested": {
"nested": {
"path": "products"
},
"aggregations": {
"DescriptiveFeatures": {
"terms": {
"field": "products.descriptiveFeatures",
"size": 1000
}
}
}
}
}
}
}
}
Это дает результат:
"aggregations": {
"FilteredDescriptiveFeatures": {
"doc_count": 280,
"nested": {
"doc_count": 1437,
"DescriptiveFeatures": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "somekey",
"doc_count": 164
},
Я также попытался поместить вложенное определение выше, чтобы оно содержало как фильтр, так и агги, но тогда термин фильтра хлебные крошки.categoryId, которого нет во вложенном объекте, не будет работать.
Возможно ли то, что я пытаюсь сделать? И как это можно решить?