возможно ли с помощью Kibana (желательно, блестящая новая версия 4 beta) выполнить соединения на стороне приложения?
Я знаю, что ES/Kibana не построена для замены реляционных баз данных, и обычно лучше денормализовать мои данные. Однако в этом случае использования это не лучший подход, поскольку индексный размер взрывается и производительность снижается:
Я индексирую миллиарды документов, содержащих информацию о сеансе сетевых потоков следующим образом: source ip, исходный порт, IP-адрес назначения, порт назначения, отметка времени.
Теперь я также хочу собрать дополнительную информацию для каждого IP-адреса, например, геолокации, asn, reverse dns и т.д. Добавление этой информации в каждый документ сеанса делает всю базу данных неуправляемой: есть миллионы документов с одинаковыми IP-адресами и избыточность добавления такой же дополнительной информации ко всем этим документам приводит к массивному раздуванию и невосприимчивому опыту пользователей даже в кластере с сотнями гигабайт оперативной памяти.
Вместо этого я хотел бы создать отдельный индекс, содержащий только уникальные IP-адреса и метаданные, которые я собрал каждому из них.
Вопрос: Как я могу анализировать свои данные с помощью кибаны? Для каждого документа, возвращаемого запросом, kibana должна выполнить поиск в ip-index и "фактически обогатить" каждый IP-адрес этой информацией. Что-то вроде добавления виртуальных полей, чтобы структура выглядела так (на лету):
источник ip, исходный порт, исходная страна, источник asn, source fqdn
Я знаю, что это будет стоить нескольких запросов.