Я попытался вызвать IndexAsync
с пакетом Merge
, содержащим отдельный документ для обновления, но с несуществующим ключом документа ( в соответствии с рекомендациями Брюса ):
var nonExistingDocument = SomeDocument()
var work = IndexBatch.Merge( nonExistingDocument );
try
{
await _search.Documents.IndexAsync( work );
}
catch ( IndexBatchException e )
{
var toRetry = e.FindFailedActionsToRetry( work, d => d.Id);
}
IndexBatchException
сработало, , что отличается от того, что задокументировано двумя способами:
- «Брошенный, когда некоторые из действий индексирования потерпели неудачу, , но другие действия преуспели и изменили состояние индекса.» Вместо этого, исключение выдается , когда любое действие терпит неудачу.
- "Это может произойти, когда служба поиска находится под большой нагрузкой индексации." Это также может произойти для неправильных запросов.
Но , FindFailedActionsToRetry
, на первый взгляд, достаточно умен, чтобы не предлагать повторять запросы, которые не были выполнены из-за ошибочных запросов . Перечисление toRetry
пусто в приведенном выше примере кода.
Короче, нет, это исключение нельзя игнорировать . Документация вводит в заблуждение, и было бы неплохо, если бы она была обновлена.