我正在尝试获取字符串的数量。我正在使用正则表达式模式。当我得到结果时,我得到类似“1”,“10”,“2”的东西。我想对它进行排序,所以我需要在左边添加零,以便自然地对它们进行排序。
我的脚本在这里:
{
"from": 0,
"size": 40,
"sort": [
{
"fields.myfield.keyword": { "order": "asc" },
"_script": {
"type": "string",
"script": {
"inline":
"def m = /(\\d+$)/.matcher(doc['fields.myfield.keyword'].value);
if ( m.find() )
{
String s = m.group(1);
String.format(\"%05d\", s.toString());
}
else { return 0 }"
},
"order" : "asc"
}
}
],
"_source": { "include": ["fields.myfield"] }}
当我尝试执行命令时,出现以下错误:
"failed_shards": [
{
"shard": 0,
"index": "myindex",
"node": "kctN6d5ITrqtIMj4cbChKQ",
"reason": {
"type": "script_exception",
"reason": "compile error",
"script_stack": [
"... ; String.format(\"%05d\", s.toString()); } else { re ...",
" ^---- HERE"
],
"script": "def m = /(\\d+$)/.matcher(doc['fields.myfield.keyword'].value); if ( m.find() ) { String s = m.group(1); String.format(\"%05d\", s.toString()); } else { return 0 }",
"lang": "painless",
"caused_by": {
"type": "class_cast_exception",
"reason": "Cannot cast from [String] to [def[]]."
}
}
}
如何在不使用String.Formatter的情况下添加零?
我在哪里尝试从STRING转为DEF?
答案 0 :(得分:1)
添加零需要类型为数字而不是字符串。您是否尝试过Integer.valueOf(s)
(仅仅在我的头顶,尚未经过验证)。