#elasticsearch #kibana
#elasticsearch #kibana
Вопрос:
Я использую специальную программу для индексации данных в Elasticsearch, но она создает документы, подобные этому:
{
contact: 31644488857,
name: "Jan",
address: "street 3"
}
и
{
person: {
phone: 31688844499,
address: "street 5"
}
name: "Piet"
}
Сейчас я ищу способ создать таблицу в kibana, которая объединяет телефонные номера, но обрабатывает их как единое поле. Поэтому я не хочу создавать разные таблицы или несколько столбцов для нескольких полей. Я просто хочу создать единую таблицу, в которой отображаются все телефонные номера, независимо от того, из какого поля они взяты.
Есть ли способ добиться этого? Я хотел бы использовать скриптовое поле, но, похоже, я не могу агрегировать по скриптовым полям…
Ответ №1:
Вы, конечно, можете создать скриптовое поле в Kibana для ( keyword
) строк, которые позже можно агрегировать.
Просто перейдите в «Управление> Шаблоны индекса», выберите соответствующий шаблон индекса, создайте новое скриптовое поле типа string и используйте следующий скрипт:
[doc['contact.keyword'].value, doc['person.phone.keyword'].value]
Это создаст новое скриптовое поле, содержащее массив, элементами которого будут поля вашего телефонного номера. Затем вы можете визуализировать это поле либо в режиме обнаружения, либо в режиме агрегирования терминов в режиме визуализации.
Комментарии:
1. Спасибо! Раньше возникало много проблем, поэтому я решил, что тогда у меня это не сработало, наверное, я использовал поля без ключевого слова или что-то в этом роде. В любом случае, сейчас это работает, но я постоянно получаю тайм-аут при настройке одноузловой оперативной памяти объемом 20 ГБ с 2 миллионами документов… Есть какие-нибудь советы по ускорению работы?