ElasticSearch: используйте Query для получения рейтинга одного документа - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь использовать ElasticSearch для вычисления рейтинга. Я не уверен, возможно ли это, и пытаюсь выяснить, какие у меня могут быть варианты. Мне нужно выполнить запрос ко всем документам, отсортировать их по убыванию, а затем просто вернуть номер позиции в списке, где находится указанная c запись.

Например, я хочу выяснить, июл ie Классный рейтинг. У меня есть записи о каждом ученике в классе Июля ie, которые содержат их имена и средний балл, и я хочу выполнить 1 запрос, который скажет мне, каков ее ранг в ее классе.

Я надеюсь, что есть Гуру ES, который может помочь, потому что в противном случае мне нужно будет выполнить обычный запрос, получить максимум 10 000 записей и выяснить это оттуда.

1 Ответ

0 голосов
/ 12 апреля 2020

Это не может быть найдено в одном запросе.

Сначала вам нужно получить средний балл "Джулия", а затем найти количество документов, которые имеют балл выше, чем Джулия.

{
  "query": {
    "range": {
      "gpa": {
        "gt": 8 --> GPA of julia
      }
    }
  },
  "aggs": {
    "count": {
      "value_count": {
        "field": "name.keyword" --> count where gpa is greater than 8
      }
    }
  }
}

Лучше сохранить ранг в самом документе при индексации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...