ElasticSearch关于CREATE写入模式的问题记录
问题:
使用CREATE模式写入TPS骤降。数据特点:每条doc有4条相同的副本,即100条数据中,包含20组相同的数据。
产生问题原因:
Java代码中对所有Reponse中包含VersionConflictException异常的请求都进行了十次重试操作,无论请求是INDEX还是CREATE还是UPDATE。
然鹅,看了官方文档以及实操后发现CREATE写入方式恰恰是通过版本锁来保证相同id只有第一条能写入成功,所以除了第一条写入的doc,其他后来的相同id的doc都会因为VersionConflictException被抛弃,这个逻辑就恰好和我写的代码中的版本锁处理逻辑冲突了。
解决:
针对CREATE模式的请求,放弃版本锁重试机制。