Обновить запись эластичного кэша без полной его замены

Я использую это, чтобы добавить кучу записей в индекс эластичного кэша:

  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

Теперь мне нужно обновить запись (учитывая ее идентификатор). Я хочу просто добавить один ключ-val к data хэш, а не заменить все состояние. Как я могу сделать это с помощью elasticsearch-ruby?

1 ответ

Решение

Я не знаю, как это сделать с ruby, но в ES есть обновление API.

Который выглядит так

POST test/type1/1/_update
{
    "script" : "ctx._source.new_field = \"value_of_new_field\""
}

Из примера с ruby ​​должно быть

 client.update index: 'myindex', type: 'mytype', id: '1',
     body: { script: 'ctx._source.tags += tag', params: { tag: 'x' } }
Другие вопросы по тегам