Ruby相当于这个curl命令

时间:2014-02-22 11:48:33

标签: ruby-on-rails ruby ruby-on-rails-3 curl rest-client

curl -s -XPOST localhost:9200/_bulk --data-binary @filename.json

我正在看RestClient宝石,无法弄清楚如何做到这一点。我需要这个来向elasticsearch发出批量请求。

2 个答案:

答案 0 :(得分:3)

您可以使用标准库(没有任何其他宝石)执行此操作:

require 'uri'
require 'net/http'

uri = URI.parse('http://localhost:9200/_bulk')
data = File.read('filename.json')
http = Net::HTTP.new(uri.host, uri.port)

response, body = http.post(url.path, data, {'Content-type'=>'text/xml; charset=utf-8'})

答案 1 :(得分:3)

使用rest-client

RestClient.post 'localhost:9200/_bulk', File.new("filename.json", 'rb'), 'Content-type' => 'application/x-www-form-urlencoded'

不确定rest-client是否会自动设置content-type,只需在没有它的情况下进行检查。