【发布时间】:2017-03-09 14:46:07
【问题描述】:
我希望在这里找到我从昨天开始一直在努力的问题的答案:
我正在使用 rabbitMQ 输入和 elasticsearch 输出配置 Logstash 1.5.6。
消息以批量格式在rabbitMQ中发布,我的logstash使用它们并将它们全部写入elasticsearch默认索引logstash-YYY.MM.DD,配置如下:
input {
rabbitmq {
host => 'xxx'
user => 'xxx'
password => 'xxx'
queue => 'xxx'
exchange => "xxx"
key => 'xxx'
durable => true
}
output {
elasticsearch {
host => "xxx"
cluster => "elasticsearch"
flush_size =>10
bind_port => 9300
codec => "json"
protocol => "http"
}
stdout { codec => rubydebug }
}
现在我要做的是将消息发送到不同的弹性搜索索引。
来自 amqp 输入的消息已经具有索引和类型参数(批量格式)。
我尝试这样做
input {
rabbitmq {
host => 'xxx'
user => 'xxx'
password => 'xxx'
queue => 'xxx'
exchange => "xxx"
key => 'xxx'
durable => true
}
output {
elasticsearch {
host => "xxx"
cluster => "elasticsearch"
flush_size =>10
bind_port => 9300
codec => "json"
protocol => "http"
index => "%{[index][_index]}"
}
stdout { codec => rubydebug }
}
但logstash 所做的是创建索引 %{[index][_index]} 并将所有文档放在那里,而不是读取 _index 参数并将文档发送到那里!
我还尝试了以下方法:
index => %{index}
index => '%{index}'
index => "%{index}"
但似乎没有一个工作。
有什么帮助吗?
继续,这里的主要问题是:如果rabbitMQ消息具有这种格式:
{"index":{"_index":"indexA","_type":"typeX","_ttl":2592000000}}
{"@timestamp":"2017-03-09T15:55:54.520Z","@version":"1","@fields":{DATA}}
如何告诉 logstash 以“typeX”类型在名为“indexA”的索引中发送输出??
【问题讨论】:
标签: elasticsearch rabbitmq logstash bulk