Будет ли когда-либо операция IndexBatch с одним документом генерировать исключение IndexBatchException? - PullRequest
0 голосов
/ 26 апреля 2020

Документация IndexBatchException , например, при вызове IndexAsync, гласит:

Выдается при сбое некоторых действий индексирования , но другие действия завершились успешно и изменили состояние индекса . Это может произойти, когда служба поиска находится под большой нагрузкой индексации. Важно явно перехватить это исключение и проверить его свойство IndexResult. Это свойство сообщает о состоянии каждого действия индексирования в пакете, что позволяет определять состояние индекса после частичного сбоя.

Означает ли это, что это исключение можно безопасно игнорировать, если только один документ в IndexBatch? Поскольку IndexBatch с одним документом кажется невозможным частично .

1 Ответ

0 голосов
/ 29 апреля 2020

Я попытался вызвать 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 сработало, , что отличается от того, что задокументировано двумя способами:

  1. «Брошенный, когда некоторые из действий индексирования потерпели неудачу, , но другие действия преуспели и изменили состояние индекса.» Вместо этого, исключение выдается , когда любое действие терпит неудачу.
  2. "Это может произойти, когда служба поиска находится под большой нагрузкой индексации." Это также может произойти для неправильных запросов.

Но , FindFailedActionsToRetry , на первый взгляд, достаточно умен, чтобы не предлагать повторять запросы, которые не были выполнены из-за ошибочных запросов . Перечисление toRetry пусто в приведенном выше примере кода.

Короче, нет, это исключение нельзя игнорировать . Документация вводит в заблуждение, и было бы неплохо, если бы она была обновлена.

...