【发布时间】:2015-07-22 10:43:50
【问题描述】:
我有一个 RabbitMQ 队列,用于提取一些需要传输到 Elastic Search 的文档。
如何将 Elastic Search 创建为消费者,以便 ES 充当文档队列的消费者。
可能的选择:
- 使用 RabbitMQ River ?
- 使用 RabbitMQ 插件? (怎么做)
- 其他?
有人可以发一个例子吗?
【问题讨论】:
标签: elasticsearch rabbitmq elasticsearch-river
我有一个 RabbitMQ 队列,用于提取一些需要传输到 Elastic Search 的文档。
如何将 Elastic Search 创建为消费者,以便 ES 充当文档队列的消费者。
可能的选择:
有人可以发一个例子吗?
【问题讨论】:
标签: elasticsearch rabbitmq elasticsearch-river
在你的 ELK 创建配置文件 /etc/logstash/conf.d/anyfile.conf
input {
rabbitmq {
host => 'rabbit.example.com'
queue => 'my_queue_name'
exchange => "my_exchange_name"
key => 'my_logs'
durable => true
}
}
output {
elasticsearch {
host => "elk.example.com"
}
}
【讨论】:
由于您要求RabbitMQ river,这里是一个示例,尽管您应该注意rivers will be deprecated soon(即从 ES 1.5 开始)和 Prameswar Lal 使用 Logstash 的其他解决方案将是首选。
curl -XPOST localhost:9200/_river/custom_river_name/_meta -d '{
"type" : "rabbitmq",
"rabbitmq" : {
"host" : "localhost",
"port" : 5672,
"user" : "guest",
"pass" : "guest",
"vhost" : "/",
"queue" : "elasticsearch",
"exchange" : "elasticsearch",
"routing_key" : "elasticsearch",
"exchange_declare" : true,
"exchange_type" : "direct",
"exchange_durable" : true,
"queue_declare" : true,
"queue_bind" : true,
"queue_durable" : true,
"queue_auto_delete" : false,
"heartbeat" : "30m",
"qos_prefetch_size" : 0,
"qos_prefetch_count" : 10,
"nack_errors" : true
},
"index" : {
"bulk_size" : 100,
"bulk_timeout" : "10ms",
"ordered" : false,
"replication" : "default"
}
}
【讨论】: