Hey,
Some of the events sent to my ElasticSearch cluster aren't relevant in case they are related to a document which doesn't exist.
I know I could just make a regular update request, and then get exception about failing to update a missing document. But, I don't believe it's a good practice to throw many exceptions in ElasticSearch neither in my application - as of performance concerns.
So, I thought about using the ctx.op = 'noop' instead.
Remark: timestamp is a field that always exists in any of my existed documents.
Is this going to work?
POST myindex/mytype/1/_update
{
"scripted_upsert":true,
"script" : {
"source": "if (ctx._source.timestamp != null) { ctx._source.metadata = params.metadata} else { ctx.op = 'none' }",
"lang": "painless",
"params" : {
"metadata" : "hello"
}
},
"upsert" : {}
}