У меня следующее требование. В системе выполняется задание, которое извлекает документы из другой системы каждые 15 минут. После получения этих документов у меня есть собственное задание, которое запускает, обновляет документ и вставляет в него некоторые поля. Документ, полученный из другой системы, выглядит примерно так.
{
"id": 1,
"firstName": "XYZ",
"lastName": "ABC",
"grade": "",
"isUpdaterequired":"true",
"details":{
"firstName": null,
"lastName": null,
"grade": null,
"otherDetails":null
}
}
Теперь, когда этот документ загружен, мы запускаем собственное задание и изменяем документ следующим образом:
{
"id": 1,
"firstName": "XYZ",
"lastName": "ABC",
"grade": "",
"isUpdaterequired":false,
"details":{
"firstName": "XYZ",
"lastName": "ABC",
"grade": "1.10",
"otherDetails":"Filled from some other source"
}
}
Теперь, после того, как 15-минутное задание по извлечению данных запускается снова, оно получает документы, и тот же документ приходит снова
{
"id": 1,
"firstName": "XYZ",
"lastName": "ABC",
"grade": "",
"isUpdaterequired":"true",
"details":{
"firstName": null,
"lastName": null,
"grade": null,
"otherDetails":null
}
}
Таким образом, мое задание снова сохранит документ, а поле «детали» будет заменено. Можем ли мы предотвратить обновление этого специального поля c с помощью поля "isUpdaterequired"
или есть какой-либо другой способ остановить обновление поля во время обновления?
Я использую поиск Elasti c с загрузкой Spring.
Запрашивать наличие документа перед каждым сохранением стоит дорого, поскольку мы получаем почти 10 тысяч документов каждые 15 минут.
Спасибо !!