Кибана: как визуализировать на основе двух полей

Я импортировал блоги в Elasticsearch через Logstash. Это успешно завершено.

У меня есть поле в файле журнала (clientip), которое всегда заполняется, и другое поле, которое иногда заполняется (trueclientip). Я хочу агрегировать на основе объединения двух; например если trueclientip не пусто, используйте его, иначе используйте clientip.

Как я могу сделать это с визуализацией в Kibana? Нужно ли создавать поле со сценарием или есть другой подход?

Спасибо.


person baynezy    schedule 13.07.2015    source источник
comment
Если эти поля являются числами, тогда это может сработать, иначе не уверен. Причиной может быть необходимость использования скриптовых полей, которые допускают только числовые поля.   -  person Andrei Stefan    schedule 13.07.2015
comment
@andreistefan это IP-адреса, поэтому они являются строками. например 127.0.0.1   -  person baynezy    schedule 13.07.2015
comment
Это не строки ;-). IP-адреса хранятся в виде чисел внутри.   -  person Andrei Stefan    schedule 13.07.2015


Ответы (1)


Определите поле со сценарием, которое должно иметь следующую формулу: doc['trueclientip'].value ? doc['trueclientip'].value : doc['clientip'].value, и используйте ее в своих агрегатах.

Но у этой функциональности заскриптованных полей и типа ip есть обратная сторона: кажется, что вы получаете из скрипта само число (что логично, потому что заскриптованные поля в Kibana 4 используют только выражения Lucene в качестве языка), а не строковое представление. Внутренние IP-адреса на самом деле представляют собой long числа в Lucene.

Например, 127.0.0.1 представляется внутри как 2130706433. И это то, что вы увидите в Visualize.

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

person Andrei Stefan    schedule 13.07.2015