Динамический индекс_типа эластичного поиска с использованием logstash

Я работаю над хранением данных в 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. Но не смог получить это конкретное требование.


person Ysak    schedule 19.11.2014    source источник


Ответы (1)


Это сработало для меня таким образом

elasticsearch {
    host => "localhost"
    index_type => "%{type}"
  }
person Ysak    schedule 19.11.2014
comment
index_type был переименован в document_type в версии 1.5 (см. github.com/elastic/logstash/issues/3151< /а>). Текущая документация: elastic .co/guide/en/logstash/current/ - person Helge Klein; 26.02.2016
comment
Спасибо .. я позабочусь, пока мы переходим на новый es - person Ysak; 26.02.2016