前回形態素解析にsudachiを導入しました。
そのとき、データ再作成のためにbulk insertを実行したのですが、これが正しく動いていないことに気づいたので、こちらを修正していきます。
Work IDが正しく設定されていないことに気づく
OpenSearch Dashboardからデータを確認したら、WorkIdが設定されていないことに気づきました。

MySQLにはデータは正しく登録されているため、Go側の登録処理に問題があると思い処理を見直したところ、WorkIDが「文字列」として生成されており、OpenSearchに登録されていないことが分かりました。

json,Marshalは構造体のデータ構造に基づいてJSONを生成する
Bulk Insertを実行したときの大まかなデータの流れは以下の通り
DBよりデータ抽出→Goの構造体にデータを格納→json.Marshalを利用して構造体をJSONに変換→OpenSearchに登録
json.Marshalを実行したときに、int型で出力されてほしいデータがstringで出力されていたのでなんでかなと思ったら、構造体がstring型で定義されていただけという落ちでした。

WorkIdのプロパティをintに変更することで、無事にint型として出力され、OpenSearch側にも登録されました。


今更ながら、DB構造、Goの構造体、OpenSearchのインデックスそれぞれでデータ型を合わせておかないと変な場所でハマりますよという教訓でした。
created by Rinker
¥3,960
(2024/12/17 08:39:17時点 楽天市場調べ-詳細)
created by Rinker
¥4,180
(2024/12/17 08:49:23時点 楽天市場調べ-詳細)