GetById индекса в Elasti c поиск через NEST-клиент - PullRequest
0 голосов
/ 06 января 2020

У меня есть модель UserModel.cs

public class UserModel
{
      public string Id{get; set;}
      public string Name{get; set;}
      public string Age{get;set;}
}

И я не могу получить пользователя во время поиска по его идентификатору пользователя.

var clientProvider = new ElasticClientProvider();    
                var response = await clientProvider.Client.IndexAsync(UserModel, i => i
                    .Index("user_index")
                    .Type("user")
                    .Id(userModel.Id)
                );  

                return response.IsValid;

Когда я создаю запись, _id автоматически генерируется с помощью поиска elasti c, но оно сохраняется как _id мета-поле, но не в _source. И я не могу получить доступ к _id метаполя через NEST-клиент. Заранее спасибо

1 Ответ

0 голосов
/ 06 января 2020

Вы можете получить документ по идентификатору с помощью метода Get. Вот пример:

await client.IndexManyAsync(new []
{
    new Document{Id = "1", Name = "name1"}, 
    new Document{Id = "2"}, 
    new Document{Id = "3"}, 
    new Document{Id = "4"}, 
    new Document{Id = "5"}
});

await client.Indices.RefreshAsync();

var getResponse = await client.GetAsync<Document>("1");

System.Console.WriteLine($"Id: {getResponse.Source.Id} Name: {getResponse.Source.Name}");

Печать:

Id: 1 Name: name1

Класс документа:

public class Document
{
    public string Id { get; set; }
    public string Name { get; set; }
}

Надеюсь, что поможет.

...