elasticsearch - Elastic Search中如何限制然后排序

标签 elasticsearch

我想先将 Elasticsearch 返回的结果(按_score 排序)限制为 1000,然后按特定字段对这 1000 个结果进行排序。

SQL 中的一个示例是 -

select name,count,score 
from 
  (select name,count,score from users order by score limit 1000) A 
order by count

如何在 Elasticsearch 中执行此操作?

最佳答案

您可以使用辅助排序选项来实现此目的。按以下顺序排序

  1. _score( Elasticsearch 得分)
  2. sort_field(根据您的 Q 进行计数)

下面的查询将搜索文档并首先使用 elasticsearch 计算的分值进行排序,然后第二级排序将应用字段计数并且大小(限制)将为 1000,因此只有 1000 个文档返回给您。

示例

{
  "size": 1000,
  "query": {
    "match_all": {}
  },
  "sort": [
    "_score",
    {
      "count": {
        "order": "asc"
      }
    }
  ],
  "fields": [
    "name",
    "count",
    "score"
  ]
}

关于elasticsearch - Elastic Search中如何限制然后排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32117250/

相关文章:

elasticsearch - 更像这个查询没有被序列化 - NEST

Elasticsearch 在使用 query_string 时提升一个字段

java - elasticsearch - 增加计数器或创建文档(如果不存在)

mysql - Elasticsearch如何匹配一个二维数组?

elasticsearch - Elasticsearch将数字值显示为字符串

elasticsearch - 提高跨度附近

elasticsearch - 使用Elasticsearch构建报告后端:是否可以查询?

elasticsearch - 在不存在字段的情况下搜索多个索引 'query_shard_exception'

javascript - REST请求Elasticsearch缺少身份验证 token

elasticsearch - ElasticSearch Couchbase集成