1
文字列の番号を取得しようとしています。私は正規表現のパターンを使ってこれをやっています。私が結果を得ると、 "1"、 "10"、 "2"のようなものが得られます。ソートしたいので、自然にソートするために左にゼロを追加する必要があります。辛いスクリプト - 文字列をdefにキャスト
私のスクリプトはここにある:私は、コマンドを実行しようとすると
{
"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にキャストしようとしていますか?
私は確信していませんが、ゼロは整数として残っていますが、無視されると思います。自然にソートするには、 "0001"、 "0011"のようなものが必要です。 – NatsuDragonEye