0
をグルーヴィーなスクリプトを実行中にエラーが発生しました私はfunction_score機能を使用してスコア計算を変更したい、私のクエリです:elasticsearchに以下
{
"size": 1,
"query":{
"function_score": {
"query": {
"bool": {
"must": [
{
"match": {
"messageText": "car"
}
}
]
}
},
"script_score" : {
"script" : "doc['time_views'].values[doc['time_views'].values.length-1]"
}
,
"boost_mode": "replace"
}
},
"from": 0
}
が、私は、このエラー応答を得た
{
"error": {
"root_cause": [
{
"type": "script_exception",
"reason": "failed to run inline script [doc['time_views'].values[doc['time_views'].values.length-1]] using lang [groovy]"
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "datacollection",
"node": "TWeZV3R6Rq-WYQ2YIHjILQ",
"reason": {
"type": "script_exception",
"reason": "failed to run inline script [doc['time_views'].values[doc['time_views'].values.length-1]] using lang [groovy]",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "No field found for [time_views] in mapping with types [message]"
}
}
}
]
},
"status": 500
}
いくつかのソリューションは、二重引用符を使用して言います"doc ['time_views']"では、コマンドプロンプトツールからクエリを送信したときに問題が発生します。どうしてか分かりません! 私はコマンドプロンプトツールを使用しません。私は「time_views」の最後の項目の「ビュー」を使いたい
"mappings": {
"message": {
"properties": {
"text": {
"type": "string"
},
"time_views": {
"type": "nested",
"properties": {
"backupTimestamp": {
"type": "long"
},
"views": {
"type": "integer"
}
}
}
}
}
}
}
:私は直接
EDIT
これが私のインデックスマッピングであるJavaコードでクエリを作成します。私はあまりにも、スクリプトの下にしようと、それらのそれぞれが異なるエラーをスロー:
"doc['time_views.views'].values[doc['time_views.views'].values.length-1]"
error: java.util.ArrayList cannot be cast to java.lang.Number
"doc['time_views.views'].values[doc['time_views.views'].values.size()-1]"
error: failed to run inline script [doc['time_views.views'].values[doc['time_views.views'].values.size()-1]] using lang [groovy]
"doc['time_views'].values[doc['time_views'].values.size()-1].views"
error: failed to run inline script [doc['time_views'].values[doc['time_views'].values.size()-1].views] using lang [groovy]"
これは 'doc.time_views.values [-1]'の代わりに使えますか?もちろん、 'time_views'フィールドはあなたのマッピングで宣言する必要があります。 – Val