у нас есть отображение с вложенными объектами. Мы используем его для хранения вариантов в среде электронной коммерции.
Чтобы создать фильтры в электронной торговле, мы проверяем количество сегментов. Что происходит сейчас, так это то, что мы получаем число агг для каждого варианта, который соответствует. Но я хотел бы посчитать только один раз на одного родителя (даже если совпадают несколько детей).
вот наше отображение:
{
"products": {
"mappings": {
"dynamic": "false",
"properties": {
"product_id": {
"type": "keyword"
},
"variants": {
"type": "nested",
"properties": {
"brand": {
"type": "keyword"
},
"color": {
"type": "keyword"
}
}
}
}
}
}
пример документов:
{
"_index": "products",
"_type": "_doc",
"_id": "5e42f759de235d5b42e6e35524141bd2cfcbc5d0",
"_score": 1.0,
"_source": {
"product_id": "5e42f759de235d5b42e6e35524141bd2cfcbc5d0",
"variants": [
{
"color": [
"Black"
]
"brand": "Fackelmann"
},
{
"color": [],
"brand": "Fackelmann"
},
{
"color": [],
"brand": "Fackelmann",
},
{
"color": [],
"brand": "Fackelmann"
}
]
}
},
{
"_index": "products",
"_type": "_doc",
"_id": "768af68018654b04f20d32003348ee9bd81d9f65",
"_score": 1.0,
"_source": {
"product_id": "768af68018654b04f20d32003348ee9bd81d9f65",
"variants": [
{
"color": [
"Grey"
]
"brand": "Fackelmann"
},
{
"color": [],
"brand": "Fackelmann"
},
{
"color": [],
"brand": "Fackelmann",
},
{
"color": [],
"brand": "IKEA"
}
]
}
}
в этом примере мы получаем эти числа для агг:
brand:Fackelmann[7]
brand:IKEA[1]
color:Grey[1]
color:Black[1]
То, что я ожидаю получить, это:
brand:Fackelmann[2]
brand:IKEA[1]
color:Grey[1]
color:Black[1]