Elasticsearch和NEST:使用查找过滤

时间:2016-05-24 00:02:01

标签: elasticsearch nest

我正在使用Elasticsearch 1.7.x(和NEST 1.7.2)并尝试利用此处记录的查找过滤:Terms Filter Lookup。我能够为我想要的请求手工制作JSON并使用Sense执行它。功能强大,功能强大!但是,在NEST库中,我没有看到创建这样的术语子句的方法。例如,从上面引用的链接,我可以做类似的事情:

"terms" : {
   "proteins" : {
      "index" : "microarrays",
      "type" : "experiment",
      "id" : "experiment1234",
      "path" : "upregulated_proteins"
   },
   "_cache_key" : "experiment_1234"
}

有没有办法使用NEST构建此查询?如果没有,有没有办法在我构建它时将一些JSON注入到NEST查询中?我不知道NEST 2.x +是否支持此功能,但升级到ES 2.x对我们来说是一个长期计划,我想利用ES 1.7中已有的功能。

1 个答案:

答案 0 :(得分:0)

太棒了,我已经收到了弹性Greg Marzouka的答案!他说:

  

它在1.x中映射为TermsLookup()或TermsLookupFilter。有关示例,请查看unit tests

client.Search<Paper>(s => s
   .Query(q => q
      .Filtered(fq => qf
         .Filter(f => f
            .CacheKey("experiment_1234")
            .TermsLookup(t => t
               .Lookup<Protein>(p => p.UnregulatedProteins, "experiment1234", "microarrays", "experiment") 
            )
         )
      )
   ));
  

在2.x中,它与ES查询DSL更加一致。