Optimistic Concurrency
- это функция Solr
, которая может использоваться клиентскими приложениями, которые обновляют / заменяют документы, чтобы гарантировать, что документ, который они заменяют / обновляют, не был одновременно изменен другим клиентским приложением.
Если существует конфликт версий (HTTP error code 409
), клиент начинает процесс заново.
Эта функция работает, требуя поле _version_
для всех документов в индексе и сравнивая это до версии , указанной как часть команды обновления. По умолчанию схема Solr включает поле _version_
, и это поле автоматически добавляется в каждый новый документ.
$ curl -X POST -H 'Content-Type: application/json' 'http://localhost:8983/solr/techproducts/update?_version_=1632740120218042368&versions=true&commit=true&omitHeader=true' --data-binary '
[{ "id" : "aaa",
"foo_s" : "update attempt with correct existing version" }]'
обновление со значением для _version_
, которое соответствует значению в индексе, и это успешно. Поскольку мы включили versions=true
в запрос на обновление, ответ включает другое значение для поля _version_
.
Если обновление со значением для _version_
встроено в сам документ. Запрос не выполняется, потому что вы указали неверную версию. Ниже будет ошибка для него.
{
"error":{
"metadata":[
"error-class","org.apache.solr.common.SolrException",
"root-error-class","org.apache.solr.common.SolrException"],
"msg":"version conflict for aaa expected=100 actual=1632740462042284032",
"code":409
}
}
Пожалуйста, обратитесь к документации solr для получения более подробной информации.
Здесь -1 означает, что Solr не может найти документ с этой версией , Я бы посоветовал вам попробовать отправить один из документов для самостоятельного решения вручную в интерфейсе администратора Solr. Выберите название своего ядра / коллекции, затем нажмите ссылку «Документы» (на странице администрирования solr), и вы попадете на страницу, на которой вы можете отправить документ для обновления в solr.
Обновление документа Solr