青空文庫を入れて遊んでみる フィード編 メモ
青空文庫の書籍を1冊ずつ ドキュメントバッチ形式の XML に変換して
S3に置いて一気にフィードしようとしたんだけど
S3からのフィードは1回につき 5MB という制限があって断念。
まさか5MBずつ ちょろちょろフィードするわけにもいかないし。
というわけで CLI ツールを導入
https://aws.amazon.com/developertools/9054800585729911 $ tar xvfz cloud-search-tools-v2-2.0.1.0-2014.10.27.tar.gz
アカウントキー設定
$ vi ~/account-key accessKey=AKIAIOSFODNN7EXAMPLE secretKey=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY $ chmod 600 ~/account-key
↑キーの値はサンプルですよ
環境変数編集
$ vi ~/.bashrc export CS_HOME=install_directory_path export PATH=$PATH:$CS_HOME/bin export AWS_CREDENTIAL_FILE=~/account-key export CS_ENDPOINT=cloudsearch.ap-northeast-1.amazonaws.com $ source ~/.bashrc
フィードテスト
$ cs-import-documents --format xml --source ほげ/*.xml --domain-name ほげドメイン
約 1万ドキュメントをフィードして 1.5時間ぐらいだった。
んー。もうちょっと速いといいなぁ
↑の方法だと CloudSearc 側で処理しきれずに、フィードに失敗したファイルがあったので
一つずつ確実にフィードする bash スクリプト書いてみた
#!/bin/bash export JAVA_HOME=/usr/java/latest export CS_HOME=/home/ec2-user/cloud-search-tools-v2-2.0.1.0-2014.10.27 export CLASSPATH=$CLASSPATH:$CS_HOME/lib export DOMAIN_NAME=ドメイン名 FILES=$* COUNTER=1 for FILE in $FILES; do echo $COUNTER $FILE `date` cs-import-documents --format xml --source $FILE --domain-name $DOMAIN_NAME [ $? -eq 0 ] || exit 1 COUNTER=`expr $COUNTER + 1` done echo "Last file : " $FILE date