【问题标题】:Apply filters after search with elastic search使用弹性搜索搜索后应用过滤器
【发布时间】:2014-12-03 14:33:30
【问题描述】:

我有以下用例场景。我正在通过聚合一些字段而不最初应用任何过滤器来使用一些查询词进行搜索。现在假设结果是 100,000,我有来自 A 类的 50,000 和来自 B 类的 50,000。在 UI 中,如果我单击 A 类按钮,我想过滤结果并显示一个属于 A 类的结果。这是无需进行新的搜索即可。我可以在搜索完成后过滤结果吗?如果是,我该怎么做?一些java代码将不胜感激。

【问题讨论】:

    标签: java filter elasticsearch


    【解决方案1】:

    您应该使用 post_filters。您可以查看官方页面here了解更多信息。

    您还可以在博文here 中阅读有关过滤器工作的信息。

    这主要是过滤器的工作原理:

    【讨论】:

    • 我可以看到here 后过滤器在搜索请求期间应用。我想在这个请求之后过滤我的数据。我想从 SearchResponse 中过滤数据。
    • 执行查询后应用后置过滤器。它适用于计算结果并对其进行过滤。
    • 我发布的链接中的示例代码显示 setPostFilter() 函数在 execute() 函数之前应用。由此我了解到过滤器是在执行查询之前应用的。你能给我一个展示不同之处的Java示例吗?提前致谢
    • 我已经知道那个代码示例。 execute() 函数只是通过索引发送查询。它实际上并没有执行它!弹性搜索做到了!我只是想提醒您,您的 java 应用程序是一个客户端,它向服务器 elasticsearch 发送请求以执行。因此,实际上您的查询的执行顺序将如我已更新答案的博客文章中所述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多