如果两个文档的排序值相同,则在Elasticsearch中如何排序文档?

时间:2019-02-15 16:05:31

标签: sorting elasticsearch

我正在使用产品数据,这里:link

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

$in

某些文档具有相同的排序值。我在某处读到,如果排序值相同,则按内部文档ID(_id)排列。但是,情况似乎并非如此。参见下面的截图:

enter image description here

第一个 _id:961 ,然后是 _id:972 (精细)。但是,接着出现 _id:114 。我不明白它是如何随机的。

我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

如您所见,它是随机的。为了克服这个问题,当第一个字段的排序值相同时,您可以添加另一个字段进行排序。当您要使用_id时,查询如下:

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