【问题标题】:How are the documents ordered in Elasticsearch if the sort value for two documents is same?如果两个文档的排序值相同,那么 Elasticsearch 中的文档如何排序?
【发布时间】:2019-07-09 19:31:17
【问题描述】:

我正在处理产品数据,这里:link

使用max模式按关键字字段标签排序的搜索查询如下。

GET product/_doc/_search
{
  "size":100,"from":20,"_source":["tags", "name"],
  "query": {
    "match_all": {}
  },
  "sort": [
    {"tags":{
      "order":"desc",
      "mode":"max"
    }}
  ]
}

某些文档具有相同的排序值。我在某处读过,如果排序值相同,则按内部文档 id (_id) 排列。然而,情况似乎并非如此。请看下面的截图:

首先是 _id:961,然后是 _id:972(很好)。然而,随后出现了 _id: 114。我不明白它是如何随机产生的。

我们将不胜感激。

【问题讨论】:

    标签: sorting elasticsearch


    【解决方案1】:

    正如您已经看到的,它是随机的。为了克服这个问题,当第一个字段的排序值相同时,您可以添加另一个用于排序的字段。当您想使用_id 时,查询将如下所示:

    {
      "size": 100,
      "from": 20,
      "_source": [
        "tags",
        "name"
      ],
      "query": {
        "match_all": {}
      },
      "sort": [
        {
          "tags": {
            "order": "desc",
            "mode": "max"
          }
        },
        {
          "_id": "asc"
        }
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-06
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多