首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ElasticSearch-ruby :批量向上插入

ElasticSearch-ruby :批量向上插入
EN

Stack Overflow用户
提问于 2017-06-05 23:03:07
回答 1查看 707关注 0票数 2

需要使用elasticsearch-ruby在elasticsearch索引中进行批量升级。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2019-10-14 13:21:17

基本上,您正在构建一个elasticsearch操作数组,可以使用下面的第二个代码块批量发送这些操作。这里的主要内容是了解每个操作所需的语法,这应该有助于向您展示delete/index/update如何工作。

注意: data_hash是通过查询您的模型并在返回的模型上使用elasticsearch helper方法'.as_indexed_json‘生成的。这就是您在现有elasticsearch记录上索引或更新的数据。Delete显然不需要这样做。

代码语言:javascript
复制
  # operations is an array of model ids and the operation you want to perform on them
  batch_for_bulk = []
  operations.each do |id, operation|
    data_hash = YourModel.find(id).as_indexed_json
    if operation == 'delete'
      batch_for_bulk.push({ delete: { _id: id}})
    elsif operation == 'index'
      batch_for_bulk.push({ index: { _id: id, data: data_hash}})
    elsif operation == 'update'
      batch_for_bulk.push({ update: { _id: id, data: {doc: data_hash}}})
    end
  end

下面是如何发送带有一些保护措施的请求

代码语言:javascript
复制
  begin
    YourModel.__elasticsearch__.client.bulk(
        index: YourModel.index_name,
        body: batch_for_bulk
    ) if batch_for_bulk.present?
  rescue Faraday::TimeoutError
    # handle your errors here
  end

希望这能对你有所帮助!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44371888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档