Упругий поиск сортировки script не работает после обновления

Следующая сортировка script используется для работы в 0.2, но теперь не выполняется в 0.9:

{
  "_script": {
    "script": "org.elasticsearch.common.Digest.md5Hex(doc['myId'].value + 12345)",
    "type": "string",
    "order": "asc"
  }
}

Ошибка, которую я получаю:

PropertyAccessException[[Error: unresolvable property or identifier: org]

Я видел сообщения, предлагающие создать пользовательский счетный запрос, который делает эту работу, поэтому немного дополнительной информации. Я уже использую пользовательский счетный запрос, и этот сорт является второстепенным, если совпадение совпадает, что может (и должно) происходить регулярно. Постоянное число в приведенном выше примере основано на человеке, выполняющем поиск, поэтому каждый человек, который ищет, получает рандомизированную, но последовательную сортировку, и мы не всегда показываем одни и те же результаты в верхней части каждого.

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

Ответ 1

Я ответил на ваш пост в списке рассылки, проблема связана с тем, что org.elasticsearch.common.Digest был удален из elasticsearch. Я не думаю, что вы можете заменить его на одну строку, возможно, проще написать родной Java script, если вы знакомы с Java.

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

Ваш usecase заставляет задуматься о недавно добавленном запросе rescore, который позволяет сбрасывать верхние результаты K с использованием вторичного запроса. Учтите, что расстрел выполняется на каждом осколке. Поэтому, если вы попросите первые 10 документов, расследование произойдет в первых 10 документах на каждый осколок, и это повлияет на 10 лучших документов, которые будут отобраны на этапе сокращения. Похоже, вы больше искали изменение порядка возвращаемых документов, в то время как с запросом на rescore эти документы могли бы измениться из-за самого процесса rescore.

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

Было бы здорово объединить запрос rescore с запросом на оценку функции, который допускает случайный порядок.