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.
我正在使用 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.