首页 \ 问答 \ 从Ruby脚本调用Elasticsearch Rest API(Calling Elasticsearch Rest API from Ruby script)

从Ruby脚本调用Elasticsearch Rest API(Calling Elasticsearch Rest API from Ruby script)

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

我尝试使用如下所示的shell脚本,并按预期工作

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>'

PS - Ruby脚本打印所有别名,如果我只是删除有效负载并尝试。


Im new to Elasticsearch and Ruby script, Please help me in resolving this. I want add/remove aliases from index everyday by cron job.

I tried using shell script as below and its working as expected

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

Ruby Script

#! /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

input is valid json(i tested it). but Ruby script throwing below error.

> 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 script printing all aliases if I just remove payload and try.


原文:https://stackoverflow.com/questions/27453917
更新时间:2021-06-08 08:06

最满意答案

我刚刚开始使用elasticsearch ruby​​客户端,它解决了目的,并且更好地使用elasticsearch ruby​​客户端在elasticsearch中进行操作,因为ruby客户端提供了连接池(通过多个elasticsearch节点连接)

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


I just started using elasticsearch ruby client and its solved the purpose and its better to use elasticsearch ruby client to do operations in elasticsearch because ruby client provides connection pooling (connecting through multiple elasticsearch nodes)

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

相关问答

更多

Paypal rest api和Apps Script(Paypal rest api and Apps Script)

function tryPayPal() { var tokenEndpoint = "https://api.sandbox.paypal.com/v1/oauth2/token"; var head = { 'Authorization':"Basic "+ Utilities.base64Encode("EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9 ...

我是否需要Solr或ElasticSearch为Lucene DB创建REST API?(Do I need Solr or ElasticSearch to create a REST API for a Lucene DB?)

我不是完全关注你的问题,但我会从经验中说,Solr API非常适合使用。 我也使用了Elastic Search API,而且它很棒。 如果你可以选择一个并坚持下去,要么完全满足你的需求。 但是,如果您有可能更改底层引擎,那么您自己的API将支付股息。 经过精心设计,您可以在不影响界面的情况下切换引擎。 如果有选择,我仍然会选择Solr API,这是一个精心设计的解决方案。 I'm not totally following your question but I would say, from ...

从Ruby脚本调用Elasticsearch Rest API(Calling Elasticsearch Rest API from Ruby script)

我刚刚开始使用elasticsearch ruby客户端,它解决了目的,并且更好地使用elasticsearch ruby客户端在elasticsearch中进行操作,因为ruby客户端提供了连接池(通过多个elasticsearch节点连接) http://www.rubydoc.info/gems/elasticsearch-api/Elasticsearch I just started using elasticsearch ruby client and its solved the p ...

Ruby Elasticsearch API:返回索引的最新条目(Ruby Elasticsearch API: Returning the latest entry to an index)

我终于找到了正确的语法: json = client.search index: 'index', type: 'type', body: { query: { match_all: {} }, size: 1, sort: [ { _timestamp: { order: "desc"} } ] } I finally found the correct syntax: json = client.search i ...

使用rest-client ruby gem在elasticsearch get请求中传递json数据(passing json data in elasticsearch get request using rest-client ruby gem)

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( 'htt ...

如何使用REST API登录?(How to log in using REST API?)

HTTP本质上是一种无状态协议。 也就是说,没有诸如浏览器会话和cookie之类的技术,没有任何一个请求会对另一个产生影响。 https://en.wikipedia.org/wiki/Stateless_protocol API因为没有浏览器来查看它们,所以无法使用诸如“登录”之类的东西,因为它依赖于使用API时不存在的客户端技术。 您应该为每个请求使用一种认证形式,例如: 作为每个请求的查询参数附加的秘密令牌/密码 OAuth的 HTTP基本身份验证 或类似的东西。 这个问题提供了一个在Rai ...

使用Ruby / Sinatra和JRuby或Scala构建REST API(Building a REST API with Ruby/Sinatra and JRuby or Scala)

过去两年来我一直使用Ruby,最近尝试使用Scala&Lift开发应用程序。 我放弃了Scala而赞成Ruby,这是为什么。 与Lift相比,Ruby社区相当庞大,基本上你可以获得一切宝石,有大量的文档和教程,当遇到问题时很容易获得快速响应。 SO上的Lift标签只有500个问题。 Lift有一个完全不同的方法来处理东西 ,除非你已经知道Scala,否则在你掌握它之前它会给你很多痛苦。 另一方面, 西纳特拉简单明了 。 很容易与其他基于机架的库集成,并且只有大量关于Sinatra相关问题的文档和教 ...

如何使用rest api查询haystack elasticsearch?(How to make rest api for querying haystack elasticsearch?)

你应该告诉我们到目前为止你得到了什么 我会: 在那里挑选django的elasticsearch的一个实现 为单个搜索结果/或特定模型类(包含前端所需的字段)创建DRF序列化程序类 创建一个检查GET参数的视图,例如?query=foo并使用它来进行搜索 然后序列化结果并返回它 You should show us what you got so far I would: pick one of the implementations of elasticsearch for django out ...

Alfresco REST API(Alfresco REST API)

我认为你有不同的选择。 超过我将描述的三个。 我更喜欢前两个。 1)实现自己的webscript 这样做的好处是,您可以确切地决定返回什么以及如何在文件夹结构中导航。 要做你需要的就足够了用javascript和免费标记模板编写的简单webscript。 或者,如果您愿意,也可以使用Java。 存储库层Web脚本 2)使用CMIS 如果您不想编写webscript,因为没有OOTB REST API可以完全满足您的需求,那么使用CMIS会更容易。 您可以使用cmis查询轻松实现您需要执行的操作。 ...

如何以及在何处使用Firebase实现REST API(How and where to implement REST API with Firebase)

如果您需要做的就是让您的JavaScript从Firebase数据库读取和写入数据,那么您不需要使用REST API或在Python中实现任何内容。 相反,您应该能够使用Firebase JavaScript界面从JavaScript代码直接与数据库通信。 您可以按照以下说明开始操作 Firebase:使用JavaScript安装和设置 If all you need to do is have your JavaScript read and write data from the Fireba ...

相关文章

更多

最新问答

更多
  • 如何从远程文件拉取文件而不覆盖本地文件?(How do I pull files from remote without overwriting local files?)
  • Reactjs:状态改变时重新渲染iframe(Reactjs: re-renders iframes when state changed)
  • 奇怪的网址,以及跟随php页面流程的困难(odd url, and difficulty in following the php page flow)
  • 标签活动无效(Tab Activity is not working)
  • JavaME合适的语法编译器建议?(JavaME-suitable grammar compiler recommendations?)
  • 指定参数(Specifying arguments)
  • 可以通过Ruby插件或控制台覆盖Sketchup中的键盘快捷键吗?(Can one override keyboard shortcuts in Sketchup through the a Ruby Plugin or Console?)
  • 计算Java EE Web App中用户数的最佳方法(Best way to count number of users in a Java EE web App)
  • 无法使用templateUrl加载cordova中的外部模板(unable to load external templates in cordova with templateUrl)
  • PHPExcel:写入期间无法使用缓存(PHPExcel: Unable to use cache during write)
  • 在javascript中嵌套这个指针(nested this pointer in javascript)
  • 谁跟领航致远培训过,有问题问下啊
  • 控制器要求在入门时下载(Controller ask to download on entry)
  • 未能通过conda安装Asyncio(Failure to install Asyncio via conda)
  • 如何查找已完成项目的总长度?(How to find length of total completed items?)
  • 如何检查OleInitialize是否已被调用?(How to check if OleInitialize has already been called?)
  • SQL在特定范围内返回列中具有最大值的行(SQL Returning rows with max value in column, within a specific range)
  • preg_match从url获取id(preg_match get the id from url)
  • 如何在运算符中为make方程转换perl变量?(How to convert a perl variable in a operator for make equations?)
  • 在导航上方添加空格/标题。(Add a white space/ header above navigation.)
  • MeetingItem已保存;(MeetingItem saved; but change now shown in Calendar)
  • c#vb:我们应该使用System.Lazy进行资源密集型任务吗?(c# vb: Should we use System.Lazy for resource-intensive task? (when threading is not needed))
  • 为什么在armeabi代码中使用armeabi-v7a代码?(Why use armeabi-v7a code over armeabi code?)
  • 获取请求的自定义标头(Java HTTP)(Fetching a custom header of a request (Java HTTP))
  • 是否可以在嵌套的if语句中从varchar转换为numeric以动态评估参数?(Is it possible to convert from varchar to numeric within a nested if statement in order to dynamically evaluate a parameter?)
  • 如何将Html.ActionLink转换为链接到Ajax调用的按钮?(How to convert from Html.ActionLink to a button linked to Ajax call?)
  • 应用程序如何处理Windows符号链接?(How are Windows symbolic links treated by the apps?)
  • html,js,css在jsfiddle中工作,但不在sharepoint中(html, js, css works in jsfiddle but not in sharepoint)
  • 从Ruby脚本调用Elasticsearch Rest API(Calling Elasticsearch Rest API from Ruby script)
  • 如何将嵌套setTimeouts转换为承诺(How to convert nested setTimeouts to promises)