Сколько документов разрешено в одном запросе Azure поиск При создании новых действий `IndexBatch.New (actions)`? - PullRequest
0 голосов
/ 21 февраля 2020

Я не получаю Azure максимальное ограничение публикации документа в одном запросе.

Просто я хочу знать, есть ли официальная ссылка, которая показывает максимальный лимит на индексатор на сервере azure согласно купленный план Click me .

Здесь ограничения azure Официальный индексатор Ссылка

Ниже кода для создания пакетов

public virtual void PostBulkDataToAssortmentIndex(ISearchFilterResult result)
{
    var itemFilters = _searchManager.GetAllFilters();

    IEnumerable<ISearchItem> items;
    List<IndexAction<AzureSearchItem>> actionList = new List<IndexAction<AzureSearchItem>>();
    for (int i = 0; i < result.Items.Count; i = i + 32000)
    {
        actionList.Clear();
        items = result.Items.Skip(i).Take(32000);

        foreach (var item in items)
        {
            actionList.Add(IndexAction.MergeOrUpload(FormatSearchItem(item, itemFilters)));
        }

        // Post documents to index
        PostBulkAssortmentDocuments(actionList.AsEnumerable());
    }
}
public virtual void PostBulkAssortmentDocuments(IEnumerable<IndexAction<AzureSearchItem>> actions)
{
    var batch = IndexBatch.New(actions);

    try
    {
        var data = GetIndexClient(IndexName).Documents.Index(batch);
        var passResultCount = data.Results.Where(x => x.Succeeded).Count();
        var failResultCount = data.Results.Where(x => x.Succeeded == false).Count();
        var MessageResult = data.Results.Where(x => !string.IsNullOrEmpty(x.ErrorMessage));
        var keyResult = data.Results.Where(x => !string.IsNullOrEmpty(x.Key)).Select(x => x.Key).ToList();
        var unikKey = keyResult.Distinct().ToList();
    }
    catch (IndexBatchException e)
    {
        // Sometimes when your Search service is under load, indexing will fail for some of the documents in
        // the batch. Depending on your application, you can take compensating actions like delaying and
        // retrying. For this simple demo, we just log the failed document keys and continue.
        Console.WriteLine(
            "Failed to index some of the documents: {0}",
            String.Join(", ", e.IndexingResults.Where(r => !r.Succeeded).Select(r => r.Key)));
    }
}

Примечание: В отношении Azure документа я не уверен, но лимит отправки документов для партии только 1000 разрешен, но для целей тестирования я прошел 0 documents in IndexBatch.New(actions);

Затем Azure выдает исключение.

'The request is invalid. Details:
 actions: No indexing actions found in the request. Please include between 1 and 32000 indexing actions in your request.
'

И если я передал 32001 документов в течение IndexBatch.New(actions);

Затем Azure бросков исключение.

The request is invalid. Details: actions: Too many indexing actions found in the request: 32001. Please include between 1 and 32000 indexing actions in your request.

1 Ответ

0 голосов
/ 21 февраля 2020

В соответствии с documentation ограничение составляет 1000 документов или 16 МБ, в зависимости от того, что наступит раньше.

Этот подход более гибкий, чем модель извлечения, поскольку вы можете загружать документы индивидуально или в пакетном режиме ( до 1000 за пакет или 16 МБ, в зависимости от того, какой лимит наступит раньше ). Модель pu sh также позволяет загружать документы в Azure Cognitive Search независимо от того, где находятся ваши данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...