我想在弹性搜索中使用NEST API进行多层过滤,以得出结果集。是否可以查询其他过滤器的结果...?如果可以,我可以在多个级别上执行此操作吗?
我的要求就像允许用户选择/取消选择各个字段的选项。
示例:我的索引“人员”中总共有1000个文档。可能有3个列表框,1)城市2)最喜欢的食物3)最喜欢的颜色。如果用户选择一个城市,它将过滤掉600个文档。在这600份文档中,我想过滤“最喜欢的食物”,这可能会导致约300份文档。现在,我想进一步过滤一下。到喜欢的电影中检索以前导出的300个文档中的50个文档。
您无需在过滤器内查询即可实现所需的功能。只需使用过滤的查询http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html,并提供几个过滤器即可。在您的实例中,我假设您将对第一个查询执行以下操作:
{
"filtered" : {
"query" : {
"match_all" : { }
},
"filter" : {
"and" : [
{
"term" : {
"city" : "some city"
}
}
]
}
}
}
然后,您将从中返回结果并显示它们。然后,让他们选择下一个过滤器并执行以下操作:
{
"filtered" : {
"query" : {
"match_all" : { }
},
"filter" : {
"and" : [
{
"term" : {
"city" : "some city"
}
},
{
"term" : {
"food" : "some food"
}
}
]
}
}
}
然后,您需要冲洗并重复以下3个过滤器参数:
{
"filtered" : {
"query" : {
"match_all" : { }
},
"filter" : {
"and" : [
{
"term" : {
"city" : "some city"
}
},
{
"term" : {
"food" : "some food"
}
},
{
"term" : {
"colour" : "some colour"
}
}
]
}
}
}
我还没有测试过,但是原理是合理的并且可以工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句