Я хочу достичь агрегации по уникальным парам (город, штат). Согласно документации Elasticsearch Термины агрегации не поддерживают сбор терминов из нескольких полей в том же документе. Таким образом, я создал вложенную AGG так:Агрегация Elasticsearch. Порядок по вложенному ковшу doc_count
{
"size": 0,
"aggs": {
"cities": {
"terms": {
"field": "address.city",
"size": 12
},
"aggs": {
"states": {
"terms": {
"field": "address.stateOrProvince"
},
"aggs": {
"topCity": {
"top_hits": {
"size": 1,
"sort": [
{
"price.value": {
"order": "desc" }}]}}}}}}}}
В результате этого объединения я получаю ответ, как это:
{
"aggregations": {
"cities": {
"buckets": [
{
"key": "las vegas",
"doc_count": 5927,
"states": {
"buckets": [
{ "key": "nv", "doc_count": 5840 },
{ "key": "nm", "doc_count": 85 }
]
}
},
{
"key": "jacksonville",
"doc_count": 5689,
"states": {
"buckets": [
{ "key": "fl", "doc_count": 2986 },
{ "key": "nc", "doc_count": 1962 },
{ "key": "ar", "doc_count": 290 }]}}]}}}
Вопрос в том, как получить результаты отсортированы по глубочайшей doc_count?
Ожидаемое упорядоченный список должен быть таким:
- Лас-Вегас (5840)
- Джексонвилле, фл (2986)
- Джексонвилле, штат Северная Каролина (1962)
- Джексонвилле, ар (290)
- лас-Вегас, нм (85)
согласно вашему заказу у вас есть [два варианта] (https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#_multi_field_terms_aggregation) aren ' они возможны? – keety
@keety Я сначала попробовал второй вариант, и это неприемлемо, потому что мне нужно ** сохраненное поле not_analyzed **. Теперь я пытаюсь реализовать первый вариант, но получение «null, null» приводит к агрегации. Кажется, скрипт не объединяет значения. – IUnknown