Как отсортировать агрегации по полю верхних попаданий (текстовое поле)? Или есть возможность сортировать агрегаты по текстовому полю (без использования _term) - PullRequest
0 голосов
/ 10 апреля 2019

Как и в заголовке, у меня проблема с сортировкой агрегации Elasticsearch по текстовому полю.Есть ли возможность сделать это?Использование лучших хитов или что-то вроде этого?Теперь я использую термин агрегация и могу сортировать по полю агрегации, используя _term, но мне нужно отсортировать агрегацию по другому полю.Я знаю, как это сделать с полями с числовым значением.Например, используя max, min, sum и т. Д.

Было бы здорово, если бы я мог сделать это так (но не могу):

    "aggs": {
        "Variants": {
            "terms": {
                "field": "variant",
                "order": {
                    "top_Song_hits": "asc"
                }
            },
            "aggs": {
                "top_Song_hits": {
                    "sum": {
                        "name": {
                            "order": "desc"
                        }
                    }
                }
            }
        }
    }
}

или вот так:

{
    "aggs": {
        "Variants": {
            "terms": {
                "field": "variant",
                "order": {
                    "name_agg": "asc"
                }
            },
            "aggs": {
                "name_agg": {
                    "terms": {
                        "field": "name"
                    }
                }
            }
        }
    }
}

Или

{
    "aggs": {
        "Variants": {
            "terms": {
                "field": "variant",
                "order": {
                    "details": "asc"
                }
            },
            "aggs": {
                "details": {
                    "top_hits": {
                        "size": 1,
                        "_source": {
                            "include": ["name"]
                        }
                    }
                }
            }
        }
    }
}

В последнем случае я получаю сообщение об ошибке:

"reason": "Invalid aggregation order path [details]. Buckets can only be sorted on a sub-aggregator path that is built out of zero or more single-bucket aggregations within the path and a final single-bucket or a metrics aggregation at the path end."

1 Ответ

0 голосов
/ 10 апреля 2019

Я нашел решение для моей проблемы здесь:

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-collapse.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...