Термины агрегации возвращают несколько полей (min_doc_count: 0) - PullRequest
0 голосов
/ 11 февраля 2019

Я создаю Сводку условий , но хочу вернуть несколько полей.Я хочу, чтобы пользователь выбирал группы через "slug" (мое имя), но отображал фактическое "имя" (My Name).

В данный момент я делаю TopHits SubAggregation, как это:

"organisation": {
    "aggregations": {
        "label": {
            "top_hits": {
                "_source": {
                    "includes": [
                        "organisations.name"
                    ]
                },
                "size": 1
            }
        }
    },
    "terms": {
        "field": "organisations.slug",
        "min_doc_count": 0,
        "size": 20
    }
}

Это дает желаемый результат, когда весь мой запрос фактически находит некоторые сегменты / результаты.

Вы видите, я установил min_doc_count в 0, чтовернет сегменты с количеством документов, равным 0. Проблема, с которой я здесь сталкиваюсь, заключается в том, что мой ответ TopHits пуст, что приводит к невозможности предоставить правильное имя клиенту.

Пример ответа:

"organisation": {
    "doc_count_error_upper_bound": 0,
    "sum_other_doc_count": 0,
    "buckets": [
    {
        "key": "my-name",
        "doc_count": 27,
        "label": {
            "hits": {
                "total": 27,
                "max_score": 1,
                "hits": [
                {
                    "_index": "users",
                    "_type": "doc",
                    "_id": "4475",
                    "_score": 1,
                    "_source": {
                    "organisations": [
                        {
                            "name": "My name"
                        }]
                    }
                }]
            }
        }
    },
    {
        "key": "my-name-2",
        "doc_count": 0,
        "label": {
            "hits": {
                "total": 0,
                "max_score": null,
                "hits": []
            }
        }
    },
    .....

Кто-нибудь достиг этого желаемого результата?Я чувствую, что TopHits не поможет мне здесь.Всегда следует выбирать имя.

То, что я тоже пробовал:

  • Работа с подгруппами терминов.(тот же результат)
  • Работа с существенными терминами субагрегации.(тот же результат)

Я думаю, что это может быть решением, но кажется грязным:

  • Индексируйте новое поле с помощью "organisations.slug ___ organisations.name" и работайтемагия через это.
  • Ручной запрос к полю имени, где счетчик равен 0 (читай TopHits пусто)

С уважением, Заранее спасибо

...