В elasti есть опция c поиск при индексировании документа
если вы установите op_type = create, тогда он будет создавать документы только в том случае, если он не существует, в противном случае он не будет работать и вернет ошибки для этого документа
POST _bulk/
{ "index" : { "_index" : "test", "_id" : "1" ,**"op_type":"create"** } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }
Вот ссылка на то же.