Agg рассчитывает на вложенные объекты в запросе elasitcsearch только один раз - PullRequest
1 голос
/ 30 января 2020

у нас есть отображение с вложенными объектами. Мы используем его для хранения вариантов в среде электронной коммерции.

Чтобы создать фильтры в электронной торговле, мы проверяем количество сегментов. Что происходит сейчас, так это то, что мы получаем число агг для каждого варианта, который соответствует. Но я хотел бы посчитать только один раз на одного родителя (даже если совпадают несколько детей).

вот наше отображение:

{
"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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...