rsc*_*ieb 4 elasticsearch elasticsearch-painless elasticsearch-6
在这里学习一些elasticsearch,我对在脚本化字段定义中使用 min 和 max 函数感到有点困惑。第一的,
GET my_index/_search
{
"query" : {
"match_all": {}
},
"script_fields" : {
"test1" : {
"script" : {
"lang": "painless",
"source": "min(doc[\"this field\"],5)"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的回报是
"error": {
"root_cause": [
{
"type": "script_exception",
"reason": "compile error",
"script_stack": [
"min(doc[\"end\"],5)",
"^---- HERE"
],
"script": "min(doc[\"end\"],5)",
"lang": "painless"
}
], ...
Run Code Online (Sandbox Code Playgroud)
我想也许我需要给它命名Long.min并返回
"reason": "runtime error",
"script_stack": [
"""Long.min(doc["end"],5)""",
" ^---- HERE"
],
Run Code Online (Sandbox Code Playgroud)
这看起来是进步,但为什么会出现问题呢doc?
它们似乎在无痛 API 参考中,我认为如果它们不可用,那就有点愚蠢了。我一直在寻找“无痛最小最大功能”的组合,但我得到的只是上面链接的内容和一堆不相关的东西。
我在这里做错了什么?
我终于偶然发现了答案。我一直在根据我发现的示例使用转义引号,并将它们替换为单引号导致我收到错误消息,从而使我进入工作版本。我犯的另一个错误是没有使用.valueondoc['this field']来恢复实际的数字类型。工作版本是:
GET my_index/_search
{
"query" : {
"match_all": {}
},
"script_fields" : {
"test1" : {
"script" : {
"lang": "painless",
"source": "Math.min(doc['this field'].value,5)"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Double.min(匹配“此字段”的类型)也有效,但我认为 Math.min 应该更灵活。
| 归档时间: |
|
| 查看次数: |
7310 次 |
| 最近记录: |