rest - 从 ruby 脚本调用 Elasticsearch REST API

  显示原文与译文双语对照的内容
0 0

我是Elasticsearch和 ruby 脚本新手,请帮助我解决这个问题。 我希望通过cron作业在每天的索引中添加/删除别名。

我尝试使用 shell script 如下,它的工作就像预期的那样

curl -XPOST"http://$es_host:9200/_aliases" -d"$json"

Ruby 脚本

#!/usr/bin/env ruby
require 'rubygems'
require 'json'
require 'rest_client'
target="http://localhost:9200/_aliases"
request = RestClient::Request.new(
 :method => :post,
 :url => target,
 :payload => input)
puts request.execute

输入是有效的json ( 我测试过了) 。 但是 ruby 脚本抛出错误。

> ruby-1.9.3-p374@11.4.0-1/gems/rest-client-1.6.7/lib/restclient/abstract_response.rb:48:in `return!': 400 Bad Request (RestClient::BadRequest) from
>/.rvm/gems/ruby-1.9.3-p374@11.4.0-1/gems/rest-client-1.6.7/lib/restclient/request.rb:230:in `process_result' from
>/.rvm/gems/ruby-1.9.3-p374@11.4.0-1/gems/rest-client-1.6.7/lib/restclient/request.rb:178:in `block in transmit' from
>/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/1.9.1/net/http.rb:745:in
> `start' from
>/.rvm/gems/ruby-1.9.3-p374@11.4.0-1/gems/rest-client-1.6.7/lib/restclient/request.rb:172:in `transmit' from
>/.rvm/gems/ruby-1.9.3-p374@11.4.0-1/gems/rest-client-1.6.7/lib/restclient/request.rb:64:in
> `execute' from es_alias.rb:56:in `<main>'

P.S - ruby 脚本打印所有别名,如果我只是删除负载和尝试。

时间:原作者:6个回答

0 0

I 使用 elasticsearch ruby 客户端,通过使用 elasticsearch ruby 客户端来完成elasticsearch操作,因为 ruby 客户端提供连接池( 通过多个elasticsearch节点连接)

http://www.rubydoc.info/gems/elasticsearch-api/Elasticsearch

原作者:
...