elasticsearch 弹性搜索嵌套-如何在搜索中使用多级过滤器,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch 弹性搜索嵌套-如何在搜索中使用多级过滤器,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch 弹性搜索嵌套-如何在搜索中使用多级过滤器

elasticsearch 弹性搜索嵌套-如何在搜索中使用多级过滤器,elasticsearch,nest,elasticsearch,Nest,我希望有多个级别的过滤器,以便在弹性搜索中使用nestapi导出结果集。是否可以查询其他筛选器的结果。。。?如果是,我可以在多个级别中执行此操作吗 我的要求就像允许用户选择/取消选择各个字段的选项一样 示例:我的索引“people”中总共有1000个文档。可能有3个列表框,1)城市2)喜爱的食物3)喜爱的颜色。如果用户选择一个城市,它会过滤掉600个文档。在这600份文件中,我想筛选最喜欢的食物,结果可能会有300份左右。现在,我想用resp进一步过滤。要从以前派生的300个文档中检索50个文档

我希望有多个级别的过滤器,以便在弹性搜索中使用nestapi导出结果集。是否可以查询其他筛选器的结果。。。?如果是,我可以在多个级别中执行此操作吗

我的要求就像允许用户选择/取消选择各个字段的选项一样


示例:我的索引“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分隔,以获得所需的效果,这将在引擎盖下产生类似的效果。您还应该能够使用
查询字符串
,以
分隔,以获得所需的效果,这将在引擎盖下产生类似的效果。