当前位置: 首页 > 面试题库 >

使用Elasticsearch.Net/NEST根据子属性搜索父文档,其中父/子文档分别存储

裴昊阳
2023-03-14
问题内容

我想使用Elasticsearch.Net/NEST搜索相关文档。例如,我有:

Person:

id name address_id
-- ---- ----------
1  John 1
2  Mary 2

Address:

id city
-- ------
1  Boston
2  Berlin

我想分别存储“个人”和“地址”文档,并根据“地址”字段查询返回“个人”文档的位置。例如,返回居住在波士顿的人的所有文件。我已经在Elaticsearch文档中看到了一些使用映射和父/子指令的示例,但对于Elasticsearch.Net/NEST没有看到任何示例。任何代码示例或指针将不胜感激…


问题答案:

这是一个小片段,其中地址是父母

编辑:创建索引:

var indicesOperationResponse = _client.CreateIndex(ci => ci.Index("test")
            .AddMapping<Address>(m => m.MapFromAttributes())
            .AddMapping<Person>(m => m.MapFromAttributes().SetParent<Address>()));

索引文件:

var bulkResponse = _client.Bulk(b => b
            .Index<Address>(bd => bd.Object(new Address { Name = "Tel Aviv", Id = 1 }).Index("test"))
            .Index<Person>(bd => bd.Index("test").Object(new Person {Id = 5, Address = 1, Name = "Me"}).Parent(1)));

并按父母搜索

var searchResponse = _client.Search<Person>(s => s
        .Query(q=>q.MatchAll())
        .Filter(q => q
            .HasParent<Address>(c => c
                .Query(cq => cq.Match(m=>m.OnField(t => t.Name).Query("Tel Aviv"))))));


 类似资料:
  • 问题内容: 假设我要搜索一系列嵌入式文档或子文档,但将它们的父母作为我的结果返回,例如“建筑物和单元”: 现在假设我要退回所有单位> = 1000平方英尺的建筑物。我该怎么做? 问题答案: 将单位大小存储为数组: 并搜索:

  • 在Hibernate文档中,有这样一句话: Hibernate中一对多关联的默认语义与父/子关系的常用语义相比,与复合元素映射的语义要差得多。 我发现这句话很混乱,有人能解释一下它的意思吗?此外,在Best Pratices页面上,您会发现 编写细粒度的类并使用

  • 问题内容: 映射: 分行文件: 员工证件: 我想查找具有父ID的文档,我尝试了以下查询: 但是ES没有返回结果。如何在Elasticsearch中搜索具有相同父ID的子文档? 问题答案: 将在OP。有无效是没有叫父在外地类型。 以下是有效查询的示例:

  • 尝试排除其中一个子文档与查询不匹配的顶级文档。 对于下面的示例,我试图排除其中一个嵌套作业具有并且与匹配的所有文档。但是,由于其中一个嵌套作业文档与和公司匹配,因此返回此文档。我使用的是一个嵌套查询,其中公司名称必须匹配,并且过滤器的当前值为false。我如何才能使以下文件不被退回?

  • 问题内容: 我正在为我们运行概念验证,以便对ES中更多“标准化”的数据运行嵌套查询。 例如带有嵌套 客户->-名称 -电子邮件-事件->-创建-类型 现在,我可以将给定客户的事件列表移至另一位客户。例如,客户A有50个事件客户B有5000个事件 我现在想将所有事件从客户A移动到客户B 拥有数百万客户的规模,并且在UI中针对图形进行查询,Parent / Child更适合还是应该能够嵌套处理? 在我

  • 考虑以下Firestore结构: 收藏 现在,我想查询宠物满足某些条件的人。例如,拥有两只以上宠物的人,或者拥有一只名为“ABC”的宠物的人。 这可能吗?