gpt4 book ai didi

ruby - 使用rest-client ruby​​ gem在elasticsearch中传递json数据获取请求

转载 作者:数据小太阳 更新时间:2023-10-29 07:50:31 24 4
gpt4 key购买 nike

如何使用 rest 客户端执行以下查询(在 doc 中给出)。

curl -XGET 'http://localhost:9200/twitter/tweet/_search' -d '{
"query" : {
"term" : { "user" : "kimchy" }
}
}
'

我试过这样做:

q = '{
"query" : {
"term" : { "user" : "kimchy" }
}
}
'

r = JSON.parse(RestClient.get('http://localhost:9200/twitter/tweet/_search', q))

这引发了一个错误:

in `process_url_params': undefined method `delete_if' for #<String:0x8b12e18>     (NoMethodError)
from /home/socialapps/.rvm/gems/ruby-1.9.3-p194/gems/rest-client-1.6.7/lib/restclient/request.rb:40:in `initialize'
from /home/socialapps/.rvm/gems/ruby-1.9.3-p194/gems/rest-client-1.6.7/lib/restclient/request.rb:33:in `new'
from /home/socialapps/.rvm/gems/ruby-1.9.3-p194/gems/rest-client-1.6.7/lib/restclient/request.rb:33:in `execute'
from /home/socialapps/.rvm/gems/ruby-1.9.3-p194/gems/rest-client-1.6.7/lib/restclient.rb:68:in `get'
from get_check2.rb:12:in `<main>'

当我使用 RestClient.post 做同样的事情时,它给了我正确的结果!但是 elasticsearch 文档在搜索查询的 curl 命令中使用 XGET 而不是 XPOST。如何让 RestClient.get 方法起作用?

如果有替代/更好的方法来执行此操作,请提出建议。

最佳答案

RestClient 无法使用GET 发送请求主体。您有两个选择:

将您的查询作为 source URL 参数传递:

require 'rest_client'
require 'json'

# RestClient.log=STDOUT # Optionally turn on logging

q = '{
"query" : { "term" : { "user" : "kimchy" } }
}
'
r = JSON.parse \
RestClient.get( 'http://localhost:9200/twitter/tweet/_search',
params: { source: q } )

puts r

...或者只使用POST


更新:修复了 URL 参数的错误传递,注意 params 哈希。

关于ruby - 使用rest-client ruby​​ gem在elasticsearch中传递json数据获取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12988201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com