Я работаю над хранением данных в elasticsearch, используя logstash с сервера rabbitmq.
Моя команда logstash выглядит так
logstash -e 'input{
rabbitmq {
exchange => "redwine_log"
key => "info.redwine"
host => "localhost"
durable => true
user => "guest"
password => "guest"
}
}
output {
elasticsearch {
host => "localhost"
index => "redwine"
}
}
filter {
json {
source => "message"
remove_field => [ "message" ]
}
}'
Но мне нужен был logstash, чтобы поместить данные в разные типы в кластере elasticsearch. Что я имел в виду под типом:
"hits": {
"total": 3,
"max_score": 1,
"hits": [
{
"_index": "logstash-2014.11.19",
"_type": "logs",
"_id": "ZEea8HBOSs-QwH67q1Kcaw",
"_score": 1,
"_source": {
"context": [],
"level": 200,
"level_name": "INFO",
Это часть результатов поиска, где вы можете видеть, что logstash по умолчанию создает тип с именем «журналы» (_type : «журналы»). В моем проекте мне нужно, чтобы тип был динамическим и создавался на основе входных данных. Например: мои входные данные выглядят так
{
"data":"some data",
"type": "type_1"
}
и мне нужен logstash для создания нового типа в elasticsearch с именем «type_1»..
Я пытался использовать grok. Но не смог получить это конкретное требование.