Как Kibana узнает поддерживаемые агрегации типа данных (Elasticsearch)?

Я работаю над платформой, которая интегрирует Elasticsearch в себя. Некоторая часть этого программного обеспечения является своего рода интерфейсом для Elasticsearch.

Kibana каким-то образом знает, какие агрегации поддерживает конкретный тип данных Elasticsearch. Я изучил HTTP-запросы, отправленные Kibana, но не смог найти источник этой информации. (Возможно, я не был дотошным.)

Итак, мой вопрос: как Kibana определяет, какие агрегации поддерживает тип данных Elasticsearch? Можно ли получить это через API Elasticsearch или это было жестко закодировано на стороне клиента (в Kibana)?

Пример: Кибана


person Johnny    schedule 27.10.2020    source источник


Ответы (1)


Kibana использует шаблоны индекса в качестве ключевой концепции. Он знает связанные индексы и базовую структуру полей (отображение индексов) этих индексов. На основе этих шаблонов индексов Kibana может определить, какие агрегации совместимы с конкретным полем.

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

Если вам не хватает агрегации для определенного поля, проверьте, не используете ли вы множественное поле с другим типом данных решит эту проблему. После этого обновите шаблон индекса в kibana, и вы сможете выполнять агрегацию на новом несколько полей.

person ibexit    schedule 27.10.2020
comment
Спасибо за ответ, хотя я это и так знал. Я хотел бы знать, как я могу запросить список поддерживаемых агрегаций типа данных Elasticsearch, чтобы я мог использовать этот список в своем приложении. Я могу представить два способа, как это обрабатывается в настоящее время: 1. Поддерживаемые агрегации типов данных Elasticsearch могут быть запрошены через API Elasticsearch. 2. Список поддерживаемых агрегаций типа данных ES жестко запрограммирован во внешнем интерфейсе (Kibana). - person Johnny; 28.10.2020