Предотвращение обновления поля в Elasti c Search - PullRequest
0 голосов
/ 26 мая 2020

У меня следующее требование. В системе выполняется задание, которое извлекает документы из другой системы каждые 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 минут.

Спасибо !!

...