Эластичный поиск делает счет числа полей конечной релевантности - PullRequest
0 голосов
/ 24 октября 2018

У меня есть поле с именем лайки .Когда я ищу имя, я хочу, чтобы документ, который имеет наибольшее количество лайков, оказался наверху.Но это не так.

{
  "from": 0,
  "size": 10,
  "query": {
    "match": {
      "name": "Lon"
    }
  },
  "sort": [
    "_score",
    {
      "likes": {
        "order": "desc"
      }
    }
  ]
}

1 Ответ

0 голосов
/ 24 октября 2018

Вы сортируете по двум полям, "_score" и "likes".Это будет сортировать по "_score", и если есть связь (оценки одинаковы между двумя результатами), то будет использоваться "likes" для сортировки между записями, которые имеют одинаковые "_score".Из вашего вопроса звучит так, будто вы хотите отсортировать только по "likes", а "_score" не так актуально.Поэтому измените ваш запрос для сортировки просто на "likes".

{
  "from": 0,
  "size": 10,
  "query": {
        "match" : {
            "name" : "Lon"
        }
    },
    "sort" : [
        { "likes" : {"order" : "desc"}}
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...