我正在使用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中已有的功能。
答案 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更加一致。