elasticsearch 文档唯一性由多个字段共同确定(类似联合主键),并发下如何确保唯一性?

本人项目中遇到的一个问题,一个索引的一个mapping如下:{"properties":{
"pt_number":{
"type":"keyword"
},
"pt_name":{
"type":"keyword"
},
"pt_longitude":{
"type":"text"
},
"pt_latitude":{
"type":"text"
},
"rd_code":{
"type":"text"
},
"rd_name":{
"type":"keyword"
},
"area_code":{
"type":"keyword"
},
等等其他
}}
文档的唯一性,根据area_code,pt_longitude,pt_latitude共同确定。pt_number是根据自增码等其他信息生成的一个主键,也是当前文档_id。
当判断是否存在时,往往是根据area_code,pt_longitude,pt_latitude共同确定的,然后不存在即可插入。但是在并发条件下,判断及插入我是写在一个syncronized修饰的一个方法里面的。但是这样的,效率非常低,java项目用什么方法能够解决。谢谢。
摇曳的蔷薇
浏览 3498回答 2
2回答

肥皂起泡泡

嗯嗯,我认同这个说法,但是由于es的文档字段id字段,我们项目已经显式设置成了pt_number(按一定规则生成的唯一字符串,改动代价异常大),所以我们想从并发的角度来看,需要如何改写?或者es有没有其他机制,可以保证?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript