当前位置: 首页 > 面试题库 >

elasticsearch中如何应用过滤器?

林冥夜
2023-03-14
问题内容

在ES中是否在查询之前应用了过滤器?

举例来说,我正在做一个非常缓慢的模糊搜索,但是我只是在很小的日期范围内进行。例如,您可以看下面的(PHP):

$res=$client->search(array('index' => 'main', 'body' => array(
    'query' => array(
    'bool' => array(
        'should' => array(
            array('wildcard' => array('title' => '*123*')),
        )
    )
    ),
    'filter' => array(
        'and' => array(
            array('range' => array('created' => array('gte' => date('c',time()-3600), 'lte' => date('c',time()+3600))))
        )
    ),
    'sort' => array()
)));

在尝试进行较慢的搜索之前,是否会应用过滤器?

逻辑将要求先运行筛选器,然后再运行查询,但是我想确定一下。


问题答案:

如果使用filtered-query,则会在对文档计分之前应用过滤器。

通常,这会大大加快速度。但是,模糊查询将仍然使用输入来构建更大的查询,而与过滤器无关。

当您filtersearch对象上使用权时,查询将首先运行而不考虑过滤器,然后将文档从 匹配中 过滤掉-而构面将保持未过滤状态。

因此,filtered至少在不使用构面时,几乎应始终使用-query。



 类似资料:
  • 问题内容: 我想根据特定字段对结果进行排序,然后应用限制过滤器。 一个简单的常见示例是一个SQL查询,例如返回的排序结果限制为100。 我在Elasticsearch中尝试了相同的方法。但是,这没有发生。它首先应用限制,然后进行排序,这给了我不希望的结果。谁能指出我做错了什么?这是我当前正在使用的查询。 问题答案: 限制过滤器首先在每个分片上工作,然后在一个节点上合并结果。如果您有多个分片,那么可

  • 问题内容: 我要实现的目标:我不希望查询过滤器过滤“年龄”聚合,并且希望能够对其应用过滤器。 因此,如果我从以下查询开始: 我的聚合“ young_age”将同时被filter_1和filter_2过滤。我不希望我的汇总被filter_1过滤。 在查看文档时,我认为全局聚合可以解决我的问题,因此我编写了以下查询: 但是然后elasticsearch抱怨我的filter_2: “”“在[global

  • 问题内容: “过滤后的查询和过滤器”与“根查询和过滤器”之间有什么区别吗?例如 情况1: 情况2: 我在http://elasticsearch-users.115913.n3.nabble.com/Filtered-query-vs-using- filter-outside-td3960119.html中 找到了此讨论,但所引用的URL是404,并且解释过于简洁我。 请示教或提供指出这些区别的

  • 如何在执行查询前过滤ElasticSearch2.2中的文档。我引用了这个页面,但仍然无法框出正确的查询。 https://www.elastic.co/guide/en/elasticsearch/reference/2.2/query-filter-context.html 这就是我想做的…我有很多应该从句,每个有2个必须从句。WOLLE子句中的任何一个都应该匹配以检索文档。我只包括了一个sh

  • 问题内容: 这个问题是关于在研究实验和实现的细节之前做出架构选择的。它是关于Elasticsearch与MongoDB在某种程度上的特定用途的可扩展性和性能方面的适用性。 假设两者都存储具有字段和值的数据对象,并允许查询该对象主体。因此,大概可以根据选择的特定字段过滤掉对象的子集,这两者都适合。 我的应用程序将围绕根据条件选择对象。它会通过同时过滤多个字段来选择对象,换句话说,它的查询过滤条件通常

  • 我有一个员工类,有薪水和部门,还有一份员工名单。 我需要找到至少有30名员工支付至少100美元工资的部门数量。 到目前为止,我已经得到了每个部门的员工数量。但是我不知道如何应用过滤器。 任何帮助都将不胜感激。