Найти все отдельные значения для определенного поля в индексе с помощью клиента Elastic4s - PullRequest
1 голос
/ 23 мая 2019

Как я могу использоватьastic4s, чтобы получить все различные значения для определенного поля?

Пример в JSON:

GET persons/_search
{
 "size":"0",
 "aggs" : {
  "uniq_gender" : {
   "terms" : { "field" : "Gender" }
   }
  }
}

1 Ответ

0 голосов
/ 23 мая 2019

Использование условия агрегирования .

Это выглядит так:

    index: 'test',
    body: {
        "aggs": {
            "uniq_gender": {
                "terms": {"field": "Gender"}
            }
        }
    },

Ответ будет выглядеть примерно так:

{
  "uniq_gender": {
    "doc_count_error_upper_bound": 0,
    "sum_other_doc_count": 0,
    "buckets": [
      {
        "key": "male",
        "doc_count": 55
      },
      {
        "key": "female",
        "doc_count": 38
      },
      {
        "key": "other",
        "doc_count": 1
      }
    ]
  }
}

Важно отметить, из документов:

Термины агрегации должны представлять собой поле типа ключевого слова или любой другой тип данных, подходящий для агрегирования сегментов. Чтобы использовать его с текстом, вам нужно включить fielddata.

То есть, если ваше гендерное поле проиндексировано в виде текста, вы должны установить для поля fielddata значение true в отображении, узнайте, как это сделать здесь .

...