ES VersionConflictEngineException current version [-1]

I am using ElasticSearch Cluster backed by 3 nodes and batch update several items in one run.

It reports version conflicts of one item, and the raw log is

 version conflict, current version [-1] is different than the one provided [15]]

I am pretty sure the document exists because actually, I fetched it before the update.

My ES version is 6.8.22 and the source code shows the error comes from org.elasticsearch.index.engine.InternalEngine#index.

Can anybody tell me what is the method for? And give me a little hint on why it is called.
It is a bug? Fixed in the later releases? Thanks!

What does your node configuration look like? Do you have minimum_master_nodes correctly set to 2 so you avoid split brain scenarios given that you have 3 master-eligible nodes?