elasticsearch,Ruby,elasticsearch" /> elasticsearch,Ruby,elasticsearch" />

Ruby ElasticSearch红宝石:批量升级

Ruby ElasticSearch红宝石:批量升级,ruby,elasticsearch,Ruby,elasticsearch,需要使用elasticsearch ruby在elasticsearch索引中进行批量升级。任何帮助都将不胜感激。基本上,您正在构建一系列elasticsearch操作,这些操作可以与下面的第二块代码一起批量发送。这里的主要内容是了解每个操作所需的语法,这将帮助您了解delete/index/update的工作原理 注意:数据\u散列是通过查询您的模型并在返回的模型上使用elasticsearch助手方法“.as\u index\u json”生成的。这就是您正在索引或更新现有elasticse

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

基本上,您正在构建一系列elasticsearch操作,这些操作可以与下面的第二块代码一起批量发送。这里的主要内容是了解每个操作所需的语法,这将帮助您了解delete/index/update的工作原理

注意:数据\u散列是通过查询您的模型并在返回的模型上使用elasticsearch助手方法“.as\u index\u json”生成的。这就是您正在索引或更新现有elasticsearch记录的数据。删除显然不需要这样做

  # 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
下面是如何发送带有一些保护的请求

  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
希望这是有帮助的