不便なところ
OpenSearch Dashboardsで分析したい時に加工して入れておけばよかったな!って時がよくある
例えば
fieldsが{name,created_at,xxx_count}でデータが入っている場合
xxx_count別にみたときに
0:102人
1:59人
2:20人
3:5人
と結果が返ってくる
この時「xxx_countが0の人と1以上の人で分析したい」としたら再インデックスすることになる。
これは不便なので
OpenSearch DashboardsのindexPatterns>Scripted fieldsに
fieldsを追加することで再インデックスすることなく分析ができる
if (doc['xxx_count'].value >0){
return "1_or_more";
}else{
return "zero";
}
こんな感じでpainlessで書くことができる。
あとは、Visualizeで使えるので自由に分析できる
時刻をJSTに変換して曜日にしたい
typeをstringにする
return doc['createdAt'].value.withZoneSameInstant(ZoneId.of('Asia/Tokyo')).dayOfWeek.getDisplayName(TextStyle.SHORT, Locale.JAPAN);
時刻をJSTに変換して時だけを取得
時刻毎カウントができる
return doc['createdAt'].value.withZoneSameInstant(ZoneId.of('Asia/Tokyo')).getHour();