0
ich mit dem folgenden Skript zu sortieren bin versucht:Elasticsearch mit Skript Sortierung
if (doc['stats.favoriteCount'].value > doc['stats.likeCount'].value)
{
return doc['stats.favoriteCount'].value;
}
return doc['stats.likeCount'].value;
Dies ist die Anfrage Ich verwende:
{
"sort": [
{
"_script": {
"script": {
"file": "sorting-likes",
"lang": "groovy"
},
"type": "number"
}
}
]
}
Und das ist der Fehler, den ich bin immer :
"reason": {
"type": "groovy_script_execution_exception",
"reason": "failed to run file script [sorting-likes] using lang [groovy]",
"caused_by": {
"type": "missing_method_exception",
"reason": "No signature of method: 7b6bb56cf8fda7e1301b150b05d81813258c223b.if() is applicable for argument types: (java.lang.Boolean, 7b6bb56cf8fda7e1301b150b05d81813258c223b$_run_closure1) values: [true, [email protected]]\nPossible solutions: wait(), run(), run(), any(), find(), is(java.lang.Object)"
}
}
Ich kann wirklich nicht sehen, was falsch ist. Dies war ein längeres Skript und ich habe es auf ein Minimum reduziert, das ich verwenden kann.
Ausführen dieses Code als Inline funktioniert gut:
{
"sort": [
{
"_script": {
"script": {
"inline": "if (doc['stats.favoriteCount'].value>doc['stats.likeCount'].value)return doc['stats.favoriteCount'].value;return doc['stats.likeCount'].value;",
"lang": "groovy"
},
"type": "number"
}
}
]
}
Dank