通过NEST客户端进行弹性搜索时,索引的GetById

问题描述 投票:0回答:1

我有一个模型UserModel.cs

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

并且我无法通过用户ID搜索该用户。

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通过弹性搜索自动生成,但它作为元字段存储为_id,但不存储在_source下。我无法通过NEST客户端访问元字段的_id。在此先感谢

c# .net elasticsearch nest
1个回答
0
投票

您可以在Get方法的帮助下按ID检索文档。这是一个例子:

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; }
}

希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.