У нас есть несколько документов из эластичного поиска. Уникальность документа определяется некоторыми полями вместе, как обеспечить уникальность, когда многопоточность Java определяет, существует ли она и вставлена.
Я не знал, какой хороший метод у меня был раньше, поэтому я написалметод: я думаю, если он существует, если он не существует, я вставляю его, и этот метод модифицируется с помощью syncronized. Но я обнаружил, что это очень неэффективная практика.
/**
* @param document
*/
synchronized void selectAndInsert(Map<String, Object> document){
//Determine if it exists, insert it if it does not exist
}
Мое сопоставление выглядит следующим образом: {"properties": {"pt_number": {"type": "keyword"}, "pt_name":{"type": "ключевое слово"}, "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. Когда документ будет вставлен, я буду судить, существует ли он в соответствии с area_code, pt-longitude, pt_latitude, и вставить, если он не существует. Как я могу гарантировать уникальность документа, когда работает многопоточность Java?
Этот вопрос мучает меня в течение некоторого времени. Кто может мне помочь, буду очень признателен.