elasticsearch - 将 NEST 与 Elastic Search 一起用于集合

标签 elasticsearch nest

我正尝试通过 NEST .Net api 尝试使用 Elastic Search,但遇到了一些问题。我怀疑我误解了什么,或者我的文档建模不正确,但希望得到一些帮助。

我有一个包含集合的文档。下面是一个类似的陈词滥调的例子:

public class Company
{
    public DateTime RegisteredOn {get;set;}
    public string Name {get;set;}

    [ElasticProperty(Type = FieldType.nested)]
    public List<Employee> Employees {get;set;}
}

public class Employee 
{
   public string FirstName {get;set;}
   public string LastName {get;set;}

   [ElasticProperty(Type = FieldType.nested)]
   public List<SalesFigure> SalesFigures {get;set}
}

public class SaleFigure
{
   public int AverageMonthlySaleValue {get;set;}
   public int AverageVolumeSold {get;set;}
}

我已经在层次结构的每个级别创建了一个包含一些数据的索引,并且在索引之前调用了 client.MapFromAttributes<Company>();

下面的方法有效,但我想了解我如何找到所有员工名字为 Bob 的公司,和/或找到所有员工平均 AverageMonthlySaleValue > $1100 的公司

client.Search<Company>(query => query.Index("companies").Type("company")
                                 .From(0)
                                 .Size(100)
                                 .Filter(x => x.Term(n => n.Name, "Microsoft")));

有人建议嵌套查询/过滤器,因为有人建议我应该扁平化我的文档,我可以这样做,但我正在尝试创建一个模型来更好地代表真实域,所以我陷入了困境。

同样,我知道在某些时候我还必须使用分面,所以我想正确地构建所有内容以支持它。

谢谢 蒂姆

最佳答案

事实证明,我的文档结构没有太大问题。这个例子很陈腐,我在集合上查询的真实属性是一个字符串,而不是一个 int,所以开始区分大小写。

我不得不更改查询以使用小写字符串值进行比较,这很有效。像下面这样的东西起作用了。

client.Search<Company>(query => query.Index("companies")
               .Type("company")
               .From(0)
               .Size(100)
               .Filter(x => x.Term("company.employees.firstName", "microsoft")));

我仍然想知道如何使用 lamda 代替“company.employees.firstName”,但它现在可以工作。

关于elasticsearch - 将 NEST 与 Elastic Search 一起用于集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17151750/

相关文章:

elasticsearch - 如何在k8s上的Elasticsearch部署中从helm char禁用xpack.security.enabled

javascript - Meteor JS 中的搜索工具

elasticsearch completion suggest on multifield

elasticsearch - 将文件插入Elasticsearch索引中,并由分析器进行分析

elasticsearch - 是否为ignore_unavailable设置为true的Elasticsearch创建NEST搜索请求?

.net - 如何通过NEST搜索ElasticSearch并过滤结果以查找自定义属性上的不同条目

c# Nest 和 Elasticsearch 聚合

elasticsearch - 在 Elasticsearch 中无法更改 “maxClauseCount”值

elasticsearch - 如何在nest 1.7中编写existQuery

c# - Elasticsearch NEST