elasticsearch-ruby 7.15.0调用transform接口报NoMethodError如何解决
问题原因
elasticsearch-ruby 7.x版本中,Transform属于非核心API模块,不会默认挂载到Client实例上,所以即使对应源码存在于依赖包目录下,直接调用elasticsearch.transform也会报方法不存在错误。核心模块如Indices是默认预加载的,所以可以正常调用。
解决方法
如果需要使用封装好的Transform系列接口,按以下步骤操作即可:
- 引入Transform模块源码
require 'elasticsearch' require 'elasticsearch/api/actions/transform'
- 将Transform模块混入初始化完成的Client实例
elasticsearch = Elasticsearch::Client.new( cloud_id: '******', user: '******', password: '******', log: false ) # 挂载transform命名空间 elasticsearch.extend(Elasticsearch::API::Transform)
- 正常调用对应接口即可
# 停止Transform示例 elasticsearch.transform.stop_transform transform_id: 'my_transform' # 其他Transform接口也可以按官方定义的方法名正常调用
临时调用简化方案
如果仅需要调用少量Transform接口,也可以直接使用底层请求方法,无需引入和混入模块:
elasticsearch.transport.perform_request('POST', "_transform/my_transform/_stop")
内容的提问来源于stack exchange,提问作者icalvete
相关产品推荐
相关产品推荐

