【问题标题】:ElasticSearch: Partial Update a document or remove it. (Opposite of upsert)ElasticSearch:部分更新或删除文档。 (与 upsert 相对)
【发布时间】:2016-06-29 21:26:50
【问题描述】:

在 ElasticSearch 中,我使用 upsert 更新可能不存在的文档:

POST /website/pageviews/1/_update
{
   "script" : "ctx._source.online+=1",
   "upsert": {
       "online": 1
   }
}

由于我的数据会经常更改,如果online == 0,我想删除我的文档。

如果我需要每次获取文档并检查online的值,使用update是没有用的,我不想堆积很多垃圾文档。

online == 0 时删除我的文档的最佳方法是什么?比如:

POST /website/pageviews/1/_update
{
   "script" : "ctx._source.online-=1",
   "remove_doc": "ctx._source.online == 0"
}

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您可以像这样使用delete operation

    POST /website/pageviews/1/_update
    {
       "script" : "if (online == 0) { ctx.op = 'delete' } else { ctx._source.online += 1 }",
       "upsert": {
           "online": 1
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 2015-11-14
      • 2017-07-10
      相关资源
      最近更新 更多