У меня есть набор документов в ES, и у меня есть внешний список, который отсортирован по некоторой логике. Когда я получаю эти документы из ES, я хочу, чтобы они сортировались во внешнем списке, и, если они не существуют во внешнем списке, у меня есть набор других параметров, по которым они должны быть отсортированы.
Например, у меня D1, D2, D3, D4
в ES. Внешний отсортированный список имеет порядок D3, D1
. И исходя из вышеупомянутых других параметров, порядок в ES будет D4, D3, D1, D2
. Итак, мой конечный результат, который я хочу, это D3, D1, D4, D2
.
Пока я не увижу, есть два способа сделать это. Я могу либо
- сохранит значения ранга в своих соответствующих документах, т. Е.
D3
будет иметь поле rank
(скажем так), как 1, D1
будет иметь его как 2, оставаясь null
. И в моем запросе на сортировку я говорю сначала «сортировка по rank
», а затем и другие параметры. OR
- Используйте это, чтобы увеличить соответствующие документы. Поэтому для каждого из этих документов у меня будет
term
параметр запроса и повышения (который нужно будет тщательно решить, иначе D4
может предшествовать D1
).
Два вопроса по этому вопросу.
- Что предпочитает сообщество и почему?
- Есть ли какие-либо преимущества в производительности, которые я получаю, используя одно над другим?
Лично я склоняюсь к варианту 1, так как вероятность ошибок меньше.