更新elasticcache记录而不完全替换它

时间:2017-02-17 00:32:57

标签: ruby elasticsearch elasticsearch-ruby

我使用它将一堆记录添加到elasticcache索引:

  def self.index_trends(trend_hashes)
    formatted_trends = trend_hashes.map do |trend_hash|
      {
        index: {
          _index: 'trends',
          _type: 'trend',
          _id: trend_hash["id"],
          data: trend_hash
        }
      }
    end
    elasticsearch.bulk({
      body: formatted_trends
    })
  end

现在我需要更新记录(给定其ID)。我想在data哈希中添加一个key-val,而不是替换整个状态。如何使用elasticsearch-ruby

执行此操作

1 个答案:

答案 0 :(得分:1)

我不知道如何使用ruby执行此操作,但在ES中有update API

看起来像这样

POST test/type1/1/_update
{
    "script" : "ctx._source.new_field = \"value_of_new_field\""
}
带有红宝石的

From example应该是

 client.update index: 'myindex', type: 'mytype', id: '1',
     body: { script: 'ctx._source.tags += tag', params: { tag: 'x' } }