Как использовать script upsert в logstash для обновления документа

#elasticsearch #groovy #logstash #upsert #elasticsearch-painless

#elasticsearch #groovy #logstash #upsert #elasticsearch -безболезненный

Вопрос:

Я использую приведенный ниже блок вывода для обновления документа и увеличения счетчика (частичные обновления) для существующего документа с соответствующим идентификатором.

В настоящее время после первой записи документа в elasticsearch «скрипт» не влияет на последующие вызовы обновления. Это не увеличивает значение счетчика

Ниже приведен блок вывода logstash с использованием upsert и script:

   `output {
    stdout { }
    elasticsearch {
    hosts => "localhost"
    index => "test_dest"
    script => "ctx._source.views =1"
    script_lang => "painless"
    script_type => "inline"
    # scripted_upsert => true 
    doc_as_upsert => true
    document_id => "%{[userId]}"
  }
  stdout {
    codec => "json"
  }
}`
  

Ответ №1:

Попробуйте установить action значение «обновить» и scripted_upsert значение «true», как показано ниже:

 output {
    elasticsearch {
       action => "update"
       hosts => "localhost"
       index => "test_dest"
       script => "ctx._source.views =1"
       script_lang => "painless"
       script_type => "inline"
       scripted_upsert => true 
       document_id => "%{[userId]}"
     }
}