You are currently viewing OpenSearchでなにか作るぞ!(dAnimeリメイク 番外編 バグ修正)

OpenSearchでなにか作るぞ!(dAnimeリメイク 番外編 バグ修正)

前回形態素解析に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のインデックスそれぞれでデータ型を合わせておかないと変な場所でハマりますよという教訓でした。

コメントを残す