NESTされたフィールドに対するwhitelistの適用について

下記のようなドキュメントをlogstashにて解析し、Elasticsearchに連携しています。

~省略~
"timestamp_log": "2022-06-03T09:01:28.000+09:00",
"awsRegion": "us-east-1",
"requestParameters": {
  "template": false,
  "resourceId": "5tfEXAMPLE",
  "restApiId": "3rbEXAMPLE"
~省略~
}

ネストされたフィールドrequestParameters.resourceIdのみをElasticsearchに連携したい場合、rubyフィルターで実現可能でしょうか?もしくは他に実現方法があればご教示いただけますと幸いです。
pruneフィルターはネストされたフィールドには対応していない認識なので、rubyフィルターで代用できないかと思っております

@t-nakata さん

が参考になりませんでしょうか?

これを参考に私もネストフィールドの一部を削除したりしています。

ご回答ありがとうございます。頂いたページは私も見たのですが、これは指定したフィールドを削除する処理になるかと思います。(pruneフィルターのblacklist相当)
今回扱うドキュメントはJSON形式となっており、事前に存在しうるフィールドの抽出が困難なため、指定したフィールドのみを連携する処理としたい(pruneフィルターのwhitelist相当)ので、このページとは処理が異なると思っており、こちらに投稿させて頂きました

そういう事情があるんですね。

[requestParameters][resourceId]をネストではない新たなフィールドにコピーし、
その新たなフィールドをwhitelistにし、pruneで新たなフィールド以外を削除する
のではダメでしょうか?(すみません、試してはおりません)

mutate{
  copy => {
    "[requestParameters][resourceId]" => "NewField"
  }
}

prune{
  whitelist_names => ["^NewField$"]
}

ありがとうございます。可能であればネストされたフィールド構造は維持したいと考えております。
下記によるとrubyでも実現できる旨の記載があるので、問い合わせさせて頂きました。頂いた方式も視野に入れつつ検討しようと思います

1 Like