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

如何在Elasticsearch中排序然后应用限制过滤器

陶沛
2023-03-14
问题内容

我想根据特定字段对结果进行排序,然后应用限制过滤器。

一个简单的常见示例是一个SQL查询,例如select name from users order by name limit 100返回的排序结果限制为100。

我在Elasticsearch中尝试了相同的方法。但是,这没有发生。它首先应用限制,然后进行排序,这给了我不希望的结果。谁能指出我做错了什么?这是我当前正在使用的查询。

{
  "sort": [
    "full_name"
  ],
  "filter": {
    "limit": {
      "value": 100
    }
  }
}

问题答案:

限制过滤器首先在每个分片上工作,然后在一个节点上合并结果。如果您有多个分片,那么可能会产生有趣的结果。我认为,正如Gabbar已经提到的那样,您正在寻找的是“大小”参数。



 类似资料:
  • 问题内容: 这与多级排序无关。 我需要首先根据距离选择结果,将结果限制为50,然后再按价格将这50结果排序。 本质上,第二种排序放弃了内部排序的顺序-但是内部排序用于磨练前50个结果。 对于此类问题,我看到的其他答案是第二级排序,这不是我想要的。 顺便说一句:我看过聚合-前N个结果,但不确定是否可以对聚合结果排序应用排序。也看过了,但我不知道将“分类”放在哪里 问题答案: 热门匹配汇总可让您根据主

  • 问题内容: 在ES中是否在查询之前应用了过滤器? 举例来说,我正在做一个非常缓慢的模糊搜索,但是我只是在很小的日期范围内进行。例如,您可以看下面的(PHP): 在尝试进行较慢的搜索之前,是否会应用过滤器? 逻辑将要求先运行筛选器,然后再运行查询,但是我想确定一下。 问题答案: 如果使用-query,则会在对文档计分之前应用过滤器。 通常,这会大大加快速度。但是,模糊查询将仍然使用输入来构建更大的查

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

  • 问题内容: 我有这种结构的文档: 我想对FIELD2.SUBFIELDs中的数字总和的结果进行排序: 如果这样做,我将获得未排序的存储桶,但是我希望存储桶按“ a2”值进行排序。我该怎么做?谢谢! 问题答案: 你差点就吃了。你只需要一个添加属性到你的条件聚合,是这样的:

  • 我使用spring amqp和rabbitmq在我的应用程序中交换消息。一旦我的应用程序启动,我将在我的tomcat控制台中不断看到大量的消息监听日志。我想禁用。怎么做? 下面是我的log4j配置。尽管我只提到了文件appender,但所有侦听器日志都在我的应用服务器控制台中打印。 需要添加任何配置吗? 编辑帖子: 我添加了在JAVA_OPTS中。请在下面找到日志。 我的项目结构如下所示。 项目结

  • 问题内容: 我写了一个过滤器函数,它将根据您传递的参数返回数据。我希望控制器具有相同的功能。是否可以在控制器中重用过滤器功能? 到目前为止,这是我尝试过的: 问题答案: 将 $ filter 注入控制器 然后,无论您想在哪里使用该过滤器,都可以像这样使用它: 如果要将参数传递给该过滤器,请使用单独的括号进行处理: 您要过滤的数组在哪里,并且是用于过滤的对象。