упругая сортировка в агрегации не работает - PullRequest
0 голосов
/ 12 марта 2019

Я использую агрегирование для группировки поля на основе суммы другого поля.

Это работает, но вывод не похож на тот, который я получаю из запроса к базе данных.

ES-запрос:

{
    "from": 0,
    "size": 0
,
    "aggs": {"domain_agg": {
            "terms": {
                "field": "domain_name.keyword"
            },
            "aggs": {
                "domain_store_count_sum": {
                    "sum": {
                        "field": "store_count"
                    }
                },
                "domain_store_count_agg": {
                    "bucket_sort": {
                        "sort": [
                            {
                                "domain_store_count_sum": {
                                    "order": "desc"
                                }
                            }
                        ],
                        "size": 5
                    }
                }
            }
        }

    },
    "query": {
        "query_string": {
            "query": "(*:*) "
        }
    }
}

выход:

"domain_agg": { "doc_count_error_upper_bound": 9, "sum_other_doc_count": 1442, "ведра": [ { "ключ": "advanceautoparts.com", "doc_count": 2, "domain_store_count_sum": { «значение»: 11258 } }, { "ключ": "tesla.com", "doc_count": 3, "domain_store_count_sum": { «значение»: 6795 } }, { "ключ": "aldi.us", "doc_count": 2, "domain_store_count_sum": { «Значение»: 3678 } }, { "ключ": "alamo.com", "doc_count": 2, "domain_store_count_sum": { «значение»: 566 } }, { "ключ": "ajg.com", "doc_count": 2, "domain_store_count_sum": { «значение»: 440 } } ]}

Но когда я запустил то же самое в базе данных, я получил другой вывод.

Запрос БД:

SELECT domain_name, SUM(store_count) AS store_count
FROM table
GROUP BY domain_name order by store_count desc

Выход:

'subway.com','57384'
'bmoharris.com','56876'
'peets.com','37472'
'citibank.com','32348'
'shell.us','23016'

Почему я получаю разные результаты в эластичном поиске, хотя у обоих одинаковые данные.

1 Ответ

0 голосов
/ 12 марта 2019

Вам не нужно уточнять отображение в основной агг:

"field": "domain_name.keyword" => "field": "domain_name"

и вы должны удалить часть запроса.

"query": {
        "query_string": {
            "query": "(*:*) "
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...