Azure Поиск: количество проиндексированных документов не соответствует общему количеству загруженных записей. - PullRequest
0 голосов
/ 18 февраля 2020

Я пытался загрузить 31 отдельную запись с сервера SQL в azure облако с помощью Azure Поиск. NET SDK. Я могу загрузить записи без каких-либо технических ошибок. Даже журналы подтверждают, что все 31 запись была проиндексирована путем возврата кода состояния как 200 для всех 31 записей

Однако на портале azure, когда я вижу количество документов в индексе, я вижу только 27. Это означает, что 4 записи почему-то не индексируются. если две записи имеют одинаковые идентификаторы участника, то загружается только одна. Чтобы избежать этого, я создал новый ключ в dto, который является комбинацией идентификатора стороны и идентификатора тега, чтобы гарантировать, что ключи уникальны для каждой строки. Однако это не помогло, и я продолжаю терять строки, которые имеют одинаковые идентификаторы partyIds.

Может кто-нибудь объяснить мне, почему записи отсутствуют? я попробовал поискать похожие статьи, но пока не повезло.

Ниже приведен объект Dto

public class PartyTagMappingDto
{
    [Key] //combination of partyId and TagId
    public string Id { get; set; }

    [IsFilterable,IsSearchable]
    public string PartyId { get; set; }
    [IsSearchable,IsFilterable]
    public string TagId { get; set; }

    [IsSearchable,IsFilterable]
    public string TagName { get; set; }

    public string Description { get; set; }
}

1 Ответ

2 голосов
/ 20 февраля 2020

Возможно, возможно, вы отправляете дублированные данные, если хотите проверить, добавьте code, чтобы узнать, куда идет ваша 4 запись.

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();
    string json = Newtonsoft.Json.JsonConvert.SerializeObject(data);
}
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)));  
}

Примечание: в unikKey результате можно узнать фактический результат, который был обновлен или создан на azure сервере.

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