elasticsearch,C#,Entity Framework,elasticsearch" /> elasticsearch,C#,Entity Framework,elasticsearch" />

C# poco实体的弹性搜索

C# poco实体的弹性搜索,c#,entity-framework,elasticsearch,C#,Entity Framework,elasticsearch,我有poco实体,每个父实体都有自己的子外键数据,如FK_所有者_用户 public class Listing { public int Id{ get; set; } public int Status { get; set; } public string Title { get; set; } public string Description { get; set; } public virtual User FK_Owner_User{ get; set; } } 当我使用dbco

我有poco实体,每个父实体都有自己的子外键数据,如FK_所有者_用户

public class Listing
{
public int Id{ get; set; }
public int Status { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public virtual User FK_Owner_User{ get; set; }
}
当我使用dbcontext获取父类时,我将其添加到弹性搜索索引中

public ElasticClient ElasticClient
        {
            get
            {
                var node = new Uri("http://localhost:9200");

                var settings = new ConnectionSettings(
                    node,
                    defaultIndex: "index_name"
                );

                var client = new ElasticClient(settings);
                return client;
            }
        }


DBContext dbContext = new DBContext();
            List<Listing> listings = dbContext.Listings.Where(l => l.Status == 1).Take(10).ToList();
            foreach (var listing in listings)
            {
                ElasticClient.Index(listing)
            }

var results = ElasticClient.Search<Listing>(body =>
      body.Query(query =>
       query.QueryString(qs => qs.Query(productListRequestModel.SearchKey))));
            return results.Documents.ToList();
public ElasticClient ElasticClient
{
得到
{
var node=新Uri(“http://localhost:9200");
var设置=新连接设置(
节点,
defaultIndex:“索引名称”
);
var客户端=新的ElasticClient(设置);
返回客户;
}
}
DBContext DBContext=new DBContext();
List listings=dbContext.listings.Where(l=>l.Status==1).Take(10.ToList();
foreach(清单中的var清单)
{
ElasticClient.Index(列表)
}
var results=ElasticClient.Search(body=>
body.Query(Query=>
QueryString(qs=>qs.query(productListRequestModel.SearchKey));
返回results.Documents.ToList();
但是我看到外键是空的。我的问题是,当我将poco实体添加到弹性客户端索引时,如何填充外键数据

提前谢谢


Unal

要查找相同类型的所有文档,可以执行以下操作:

  var listingResult2 = client.Search<Listing>(s => s.AllIndices());
 var listingResult = client.Search<Listing>(sd => sd.Query(q => q.Term(l => l.Status, "1")));

有两个问题:您确定您的列表对象来自DB的用户实例吗?您在查询中使用的函数是什么?octavioccl否我不确定我现在是否正在检查。第二个答案是我不明白你的问题。我在哪里使用Func?非常感谢这:productListRequestModel。SearchKey@octavioccl列出对象时,用户实例来自DB,但当我索引时,它会变为null:/Hi@octavioccl,谢谢,但它对我不起作用。列表中的Still User对象为null.ravel,在我的例子中它可以工作,您使用的是哪个版本的elasticsearch,以及哪个版本的NEST?