ElasticSearch Boost с ранга против магазина и сортировки с рангом - PullRequest
0 голосов
/ 02 мая 2019

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

Например, у меня D1, D2, D3, D4 в ES. Внешний отсортированный список имеет порядок D3, D1. И исходя из вышеупомянутых других параметров, порядок в ES будет D4, D3, D1, D2. Итак, мой конечный результат, который я хочу, это D3, D1, D4, D2.

Пока я не увижу, есть два способа сделать это. Я могу либо

  1. сохранит значения ранга в своих соответствующих документах, т. Е. D3 будет иметь поле rank (скажем так), как 1, D1 будет иметь его как 2, оставаясь null. И в моем запросе на сортировку я говорю сначала «сортировка по rank», а затем и другие параметры. OR
  2. Используйте это, чтобы увеличить соответствующие документы. Поэтому для каждого из этих документов у меня будет term параметр запроса и повышения (который нужно будет тщательно решить, иначе D4 может предшествовать D1).

Два вопроса по этому вопросу.

  1. Что предпочитает сообщество и почему?
  2. Есть ли какие-либо преимущества в производительности, которые я получаю, используя одно над другим?

Лично я склоняюсь к варианту 1, так как вероятность ошибок меньше.

...