Elasticsearch 和 NEST:使用查找进行过滤

Elasticsearch and NEST: Filtering with Lookups

我正在使用 Elasticsearch 1.7.x(和 NEST 1.7.2)并尝试利用此处记录的查找过滤:Terms Filter Lookup。我可以为我想要的请求手工制作 JSON 并使用 Sense 执行它。效果很好,很棒的功能!但是,在 NEST 库中,我看不到创建此类条款子句的方法。例如,根据上面引用的 link,我可以做类似的事情:

"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 中已经可用的功能。

太棒了,我已经收到了 Elastic Greg Marzouka 的回复!他说:

It's mapped as TermsLookup() or TermsLookupFilter in 1.x. Check out the unit tests for some examples.

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

In 2.x it's a little more aligned with the ES query DSL.