Как документы упорядочиваются в Elasticsearch, если значение сортировки для двух документов одинаково? - PullRequest
0 голосов
/ 15 февраля 2019

Я работал с данными о продуктах, здесь: ссылка

Поисковый запрос, который сортирует по тегам полей ключевых слов в режиме max, выглядит следующим образом.

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

Некоторые документы имеют одинаковое значение сортировки.Я где-то читал, что если значение сортировки одно и то же, оно упорядочивается по внутреннему идентификатору документа (_id).Однако дело не кажется таким.См. Скриншот ниже:

enter image description here

Сначала _id: 961 , за которым следует _id: 972 (штраф).Однако потом пришло _id: 114 .Я не понимаю, как это получилось случайно.

Помощь будет оценена.

1 Ответ

0 голосов
/ 16 февраля 2019

Как вы уже видели, это случайно.Чтобы преодолеть это, вы можете добавить другое поле для сортировки, если значение сортировки для первого поля одинаково.Поскольку вы хотите использовать _id, запрос будет выглядеть следующим образом:

{
  "size": 100,
  "from": 20,
  "_source": [
    "tags",
    "name"
  ],
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "tags": {
        "order": "desc",
        "mode": "max"
      }
    },
    {
      "_id": "asc"
    }
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...