ElasticSearch:部分更新文档或将其删除。 (与upsert相反)

时间:2016-06-29 13:21:54

标签: elasticsearch

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

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

由于我的数据会经常更改,因此我想删除online == 0

中的文档

如果我每次都需要获取文档并检查update值,那么使用online将毫无用处,而且我不想累积大量垃圾文档。

online == 0时删除文档的最佳方法是哪种?类似的东西:

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

1 个答案:

答案 0 :(得分:2)

您可以像这样使用delete operation

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