弹性搜索与poco实体

时间:2015-01-08 14:57:36

标签: c# entity-framework elasticsearch

我有poco实体,每个父实体都有自己的子外键数据,如FK_Owner_User。

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();

但是我看到外键是null。我的问题是当我将poco实体添加到弹性客户端索引时,如何填充外键数据?

提前致谢。

ÜNAL

1 个答案:

答案 0 :(得分:0)

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

  var listingResult2 = client.Search<Listing>(s => s.AllIndices());

退回的文件应与其用户一起提供。

如果要根据属性的值过滤文档,例如,状态为1的所有Listing文档,则可以执行以下操作:

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