Как легко изменить поле с анализируемого на non_analyzed
У меня есть поле имени хоста, которое приходит через filebeat, чтобы мой экземпляр logstash был передан в ElasticSearch, где он обрабатывается как анализируемое поле. Это вызывает проблемы, потому что само поле нужно сообщать в его совокупности.
Пример: Зная, сколько запросов поступает в "prd-awshst-x-01", а не разбивая их на prd, awshst, x, 01.
У кого-нибудь есть легкий способ сделать это, который можно использовать с визуализациями?
Спасибо,
3 ответа
Мы должны обновить отображение с проанализированного на not_analyzed для определенного поля.
PUT/ mapping url/
{
property:{
field:{
text:"not_analyzed"
}
}
}
После обновления свойства проверьте, отражено ли оно в отображении с помощью метода GET в отображении URL.
Исходя из заголовка вашего сообщения, вы уже знаете, что вам нужно изменить отображение поля на not_analyzed.
Вы должны настроить шаблон так, чтобы будущие индексы содержали это отображение.
Если вы хотите сохранить существующие данные, вам придется переиндексировать их в новый индекс с новым отображением.
Если вы используете шаблон logstash по умолчанию, возможно, он создает поле not_analyzed ".raw", которое вы можете использовать в визуализациях в kibana.
Шаблон индекса, который поставляется с Filebeat, настраивает поле имени хоста как not_analyzed.
Вам следует вручную установить шаблон индекса, поставляемый с Filebeat, а затем настроить Logstash для записи данных в индекс Filebeat, как описано в документации.
Это то, что elasticsearch
вывод будет выглядеть так. Если вы обрабатываете другие данные через Logstash, то вы можете добавить условное выражение вокруг этого выхода, чтобы через этот выход отправлялись только события ритма.
output {
elasticsearch {
hosts => "localhost:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}