ElasticSearch выдает ошибку в оценке скрипта, которая раньше работала нормально

У меня есть несколько типов сущностей, проиндексированных ElasticSearch (используя Elastica через FOSElasticaBundle). Все они имеют свойство «Важность», которое является сохраненным целым числом.

Я использовал запрос оценки функции, который хорошо работал для сортировки результатов по их важности.

В эластике это выглядит примерно так:

$nameQuery = new \Elastica\Query\QueryString();
$nameQuery->setFields(array('name'))
->setDefaultOperator('AND')
->setQuery($name);

//Create the script score that will modulate the score
$scriptScore = new \Elastica\Script("doc['importance'].value");

//Create the Function Score query that will bring it all together
$functionScoreQuery = new \Elastica\Query\FunctionScore();
$functionScoreQuery->setQuery($nameQuery);
$functionScoreQuery->addScriptScoreFunction($scriptScore);
$functionScoreQuery->setScoreMode('multiply');

$results = $this->find($functionScoreQuery);

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

Query Failed      [
Failed to execute main query
]
]   ; nested:GroovyScriptExecutionException   [
ElasticsearchException      [
java.lang.NumberFormatException:Invalid shift value in prefixCoded bytes (is encoded value really an INT?)
]      ; nested:UncheckedExecutionException      [
java.lang.NumberFormatException:Invalid shift value in prefixCoded bytes (is encoded value really an INT?)
]      ; nested:NumberFormatException      [
Invalid shift value in prefixCoded bytes (is encoded value really an INT?)
]      ;
]   ;

Некоторые поиски заставляют задуматься о том, что параметры являются глобальными во всем ElasticSearch, и поэтому у меня может быть параметр для некоторой другой сущности с именем «важность», который нигде не является целым числом … но это не так. Единственные «важные» параметры, которые у меня есть в БД, — все идентичные целые числа.

Я пробовал -XPOST ‘HTTP: // локальный: 9200 / индекс / _optimize max_num_segments = 1?‘но это также, казалось, не изменило вещь. Я даже пытался, основываясь на другом обсуждении переполнения стека, изменить значение «целое» на «длинное» для одного из типов моих сущностей и переиндексировать сущность, это также ничего не сделало.

У кого-нибудь есть идеи? Я выдергиваю волосы уже несколько дней.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]