# algolia-cliでexportしたデータを置換して別のindexにimportする
# AlgoliaのClick Analyticsを有効化しています
AlgoliaのqueryID(どのクエリ?)で、何番目に表示されている、どのobjectIDがクリックされたのかをトラッキングするデバックをローカルで行っていました👇
# クリックで遷移した先でエラーが発生している
TypeError: Cannot read property 'indexOf' of undefined というエラーがクリックで遷移した先で発生していました。
デバッグをしたかったのですが…
- ローカルの開発環境は localhost:8888
- 8080だと会社のラップトップがブロックされてしまうのでconfig.jsで8888にしている
- Algoliaのindexに入っているレコードのURLはhttps://www.yoshida.red〜
- クリックの遷移先がローカルではない
ということで、ローカルでテストする用にindexを作ろうと思いました。
# algolia-cliを使ったexport
マイメンSepehrが作ってるalgolia-cliというツールがあるのですが、これを使ってチャチャっとやっていきます。
👇してやるだけなので、、
algolia export -a <algoliaAppId> -k <algoliaApiKey> -n <algoliaIndexName>
👇こんな感じでalgolia-index-〜っていうjsonファイルが落ちてきます。
$ algolia export -a <<App ID>> -k <<API KEY>> -n <<Index>>
Records browsed: 200
Done writing algolia-index-www.yoshida.red-1.json
Done exporting index.
See your data here: /Users/eijishinohara/xxx
そして、おじさんなら皆んな大好きsedで置換のお時間です。
sed 's/置換前/(置換後)/g'
こんな感じなので、
- 置換前: https://www.yoshida.red
- 置換後: http://localhost:8888
スラッシュはエスケープしてあげて👇こんな要領で。
$ sed 's/https:\/\/www.yoshida.red/http:\/\/localhost:8888/g' algolia-index-www.yoshida.red-1.json > local.json
# algolia-cliを使ったimport
👇これもデータ量が少なければ非常にお手軽(サイズ大きいとチャンクのサイズとか並列実行とかパラメーターに考慮が必要)
algolia export -a <algoliaAppId> -k <algoliaApiKey> -n <algoliaIndexName>
👇実際に流すとこんな感じ
$ algolia import -s local.json -a <<APP ID>> -k <<API KEY>> -n <<Index>>
Estimating data size...
Average record size: 5 Kb
Estimating network speed...
Download: 4.96 MB/s
Upload: 3.67 MB/s
Calculating optimal batch size...
Optimal batch size: 367
Starting import...
Importing [local.json]
Done reading files
# Local用のインデックスを使って検証を進めていきます
vue-cliにもenvファイルを使った環境にやりくりする機構があるのですね。この辺を上手いこと使ってビルド時にやりくり出来ると良さそうだな〜
んま、とりあえずローカルでの問題再現とデバッグを進めていきます。