青空文庫を入れて遊んでみる フィード編 メモ

青空文庫の書籍を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