Сортировка результатов по дочерним элементам и функциям

#elasticsearch #groovy

#elasticsearch #groovy

Вопрос:

в нашем проекте мы используем сортировку по hasChild, которая точно соответствует книге:

{ «query»: { «has_child»: { «type»: «blog_tag», «score_mode»: «max», «query»: { «function_score»: { «script_score»: { «script»: «_score * doc[‘click_count’].value» } }} } } }

Проблема в том, что когда у меня есть «score_mode», он возвращает следующую ошибку:

«причина»: {«тип»:»script_exception», «причина»: «не удалось запустить встроенный скрипт [«_score * doc[‘clickcount’].value] с использованием lang [groovy]», «caused_by»: {«тип»: «missing_property_exception», «причина»:»Такого свойства нет:

Избавление от «score_mode» покажет результаты, которые не отсортированы. У кого-нибудь есть идеи, в чем может быть проблема?

РЕДАКТИРОВАТЬ: вот полная ошибка. Приведенный выше пример взят из документации, поскольку моя информация конфиденциальна, и мне пришлось заменить ее example . В следующей ошибке я также заменил некоторые имена.

{«took»:24,»timed_out»:false,»_shards»:{«total»:4,»successful»:2,»failed»:2,»failures»:[{«shard»:1,»index»:»my_index»,»node»:»qA2MHVABTHKXs6Le0TD0iQ», «причина»:{«type»:»script_exception», «причина»: «не удалось запустить встроенный скрипт [_score * doc[‘type.clickcount’].value] с использованием языка [groovy]», «caused_by»:{«type»:»missing_property_exception»,»причина»: «Нет такого свойства: тип для класса: c47126be960099501d9aebe33d6f1e7666fdff5e»}}}]},»хиты»:{«всего»: 0,»max_score»: null,»хиты»:[]}}

Комментарии:

1. Не могли бы вы указать все ошибки в вопросе?

2. Запрос в вашем questiom имеет click_count . В сообщении об ошибке указано количество кликов . Это то, что вы переименовали перед публикацией?

3. Какую версию elasticsearch вы используете?

4. Да, он переименован, а версия elasticsearch — 2.3.5

5. Кажется, что отображается ошибка _score * doc['type.clickcount'].value , но у вас другой сценарий в вашем запросе

Ответ №1:

Согласно ошибке, score вместо _score

 score * doc['clickcount'].value
  

следует читать

 _score * doc['clickcount'].value
^
|
  

Комментарии:

1. извините, я как-то удалил подчеркивание в ошибке, но оно есть

2. Можете ли вы показать образец документа и / или свое отображение?

3. данные конфиденциальны, поэтому я не могу показать свое отображение: (

4. Сопоставление не содержит никаких данных 🙂