在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"
}
答案 0 :(得分:2)
您可以像这样使用delete
operation:
POST /website/pageviews/1/_update
{
"script" : "if (online == 0) { ctx.op = 'delete' } else { ctx._source.online += 1 }",
"upsert": {
"online": 1
}
}