質問失礼致します。
Elasticsearchのingest node(Script Processor)にてシュミレーションを実施していますが、
エラーが発生します。
記載内容
POST /_ingest/pipeline/_simulate
{
"pipeline": {
"processors": [
{
"script": {
"source": """
String bucket_name = ctx.aws.s3.bucket.name;
String file_name = ctx.aws.s3.object.key;
if(bucket_name != null && file_name != null ){
if (bucket_name.contains("bucketA") && file_name.contains("test1.log") ){
ctx['_index'] = "test-a-1"
}else if (bucket_name.contains("bucketB) && file_name.contains("test2.log") ){
ctx['_index'] = "test-b-1"
}
}
"""
}
}
]
},
"docs": [
{
"_index": "aaa",
"_id": "id1",
"_source": {
"aws": {
"s3": {
"bucket": {
"name": "bucketA",
"arn": "arn:aws:s3:::bucketA"
},
"object.key": "test1.log"
}
},
"message": "aiueo"
}
}
]
}
エラー内容
{
"docs" : [
{
"error" : {
"root_cause" : [
{
"type" : "exception",
"reason" : "java.lang.IllegalArgumentException: ScriptException[runtime error]; nested: NullPointerException;",
"header" : {
"processor_type" : "script"
}
}
],
(中略)
"script_stack" : [
"file_name = ctx.aws.s3.object.key;\n ",
" ^---- HERE"
],
原因として、"ctx.aws.s3.object.key"の"object.key"の記載が誤っているのですが、
ドットを含むフィールド名についてどのように記載すれば値が取得できますでしょうか。
恐れ入りますが、回答頂けますと幸いです。