elasticsearch 弹性搜索嵌套-如何在搜索中使用多级过滤器
我希望有多个级别的过滤器,以便在弹性搜索中使用nestapi导出结果集。是否可以查询其他筛选器的结果。。。?如果是,我可以在多个级别中执行此操作吗 我的要求就像允许用户选择/取消选择各个字段的选项一样elasticsearch 弹性搜索嵌套-如何在搜索中使用多级过滤器,elasticsearch,nest,elasticsearch,Nest,我希望有多个级别的过滤器,以便在弹性搜索中使用nestapi导出结果集。是否可以查询其他筛选器的结果。。。?如果是,我可以在多个级别中执行此操作吗 我的要求就像允许用户选择/取消选择各个字段的选项一样 示例:我的索引“people”中总共有1000个文档。可能有3个列表框,1)城市2)喜爱的食物3)喜爱的颜色。如果用户选择一个城市,它会过滤掉600个文档。在这600份文件中,我想筛选最喜欢的食物,结果可能会有300份左右。现在,我想用resp进一步过滤。要从以前派生的300个文档中检索50个文档
示例:我的索引“people”中总共有1000个文档。可能有3个列表框,1)城市2)喜爱的食物3)喜爱的颜色。如果用户选择一个城市,它会过滤掉600个文档。在这600份文件中,我想筛选最喜欢的食物,结果可能会有300份左右。现在,我想用resp进一步过滤。要从以前派生的300个文档中检索50个文档,您无需在筛选器中查询即可获得所需的内容。只需使用过滤查询,并提供几个过滤器。在您的实例中,我假设您会对第一个查询执行类似的操作:
{
"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"
}
}
]
}
}
}
我还没有对此进行测试,但其原理是合理的,并且会起作用。您不需要在过滤器中查询即可实现所需的功能。只需使用过滤查询,并提供几个过滤器。在您的实例中,我假设您会对第一个查询执行类似的操作:
{
"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"
}
}
]
}
}
}
我还没有对此进行测试,但其原理是合理的,并且会起作用。您不需要在过滤器中查询即可实现所需的功能。只需使用过滤查询,并提供几个过滤器。在您的实例中,我假设您会对第一个查询执行类似的操作:
{
"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"
}
}
]
}
}
}
我还没有对此进行测试,但其原理是合理的,并且会起作用。您不需要在过滤器中查询即可实现所需的功能。只需使用过滤查询,并提供几个过滤器。在您的实例中,我假设您会对第一个查询执行类似的操作:
{
"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"
}
}
]
}
}
}
我还没有对此进行测试,但原理是合理的,并且会起作用。您还应该能够使用
查询字符串
,以和
s和或
s分隔,以获得所需的效果,这只会在引擎盖下产生类似的结果。您还应该能够使用查询字符串
以和
s和或
s分隔,以获得所需的效果,这只会在引擎盖下产生类似的结果。您还应该能够使用查询字符串
以和
s和或
s分隔,以获得所需的效果,这将在引擎盖下产生类似的效果。您还应该能够使用查询字符串
,以和和或分隔,以获得所需的效果,这将在引擎盖下产生类似的效果。