Как получить количество различных значений в столбце (поле) в индексе эластичного поиска - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь получить количество всех строк и количество различных значений в столбце с помощью пакетаasticsearch-dsl в python.
Я довольно новичок вasticsearch, поэтому извинения, если я спрашиваютупой вопрос, но я прочитал всю доступную документацию по этому и не мог понять это.Буду признателен за любую помощь в этом!

Для получения количества всех строк я использую '.aggs.metric (), который работает нормально, и для получения количества различных значений, которые япопробовал .bucket («условия») и .bucket («количество элементов»), который не возвращает то, что я хочу.

Для общего количества строк:

s = Search(using=client, index="<index_name>")
s.aggs.metric('total', 'sum', field = '<column>')
s = s.execute()
s.aggregations.total.value

Для количества различных значений в столбце:

s = Search(using=client, index="brandcleanerv2")
s.aggs.metric('by_cluster', 'cardinality', field='cluster')
s = s.execute()

Второй фрагмент кода возвращает 10 строк, I 'Мы также пытались использовать параметр «Terms» внутри .bucket (), но он возвращал количество вхождений каждого отдельного значения в столбце и только для 10 значений.

1 Ответ

0 голосов
/ 06 февраля 2019

Вам нужно получить доступ к s.aggregations.by_cluster.value (после запуска execute()), чтобы получить результат агрегации cardinality, который делает то, что вы хотите.

...