2015-07-21 118 views
3

我有一個RabbitMQ隊列,可以獲取需要傳輸給Elastic Search的一些文檔。使用彈性搜索與RabbitMQ

如何創建彈性搜索作爲消費者,以便ES將消費者作爲文檔隊列執行操作。

可能的選項:

  1. 使用RabbitMQ的河?
  2. 使用RabbitMQ插件? (如何操作)
  3. 其他?

有人可以發表一個例子嗎?

回答

3

在您的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" 
    } 
} 
0

既然你問了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" 
    } 
}