こんにちは、なかやまです。
最近お仕事でCloudSearchを利用する機会がありました。
CloudSearchはAWSが提供する検索サービスになります。
cloudsearchを使って検索できるようにするにはざっくりと次のステップがあります。
1.検索ドメインを作る
2.データのアップロード
では、色々つまづいた・誤解していた事です↓
データをアップロードするたびに毎回10分かかると思ってた
検索ドメインを作ると利用できるまでに数10分かかります。
コンソール画面から検索ドメインを作ると流れでドキュメントのアップロードもできるのですが、ここでアップロードのたびに10分かかると勘違いしてしまいました。。
アップロードは直列登録しかできないと思ってた
並列登録もできますよ!負荷がかかってくるとcloudsearch側でオートスケールしてくれます。
画面上でもスケールしたことを確認できました。
アップロードすると504エラーが返ってくる
アップするドキュメントサイズによってインスタンスを指定してあげましょう。インスタンスが小さいと高確率で504エラーになります。あとアップロードするサイズは5Mになるように調整すること。
https://docs.aws.amazon.com/ja_jp/cloudsearch/latest/developerguide/uploading-data.html#bulk-uploads
検索クエリの条件に指定できるのは1000個まで
そこまで複雑な利用方法にはならないかと思いますが、念のため。
複合クエリ: 最大 1024 の句を含めることができます。
https://docs.aws.amazon.com/ja_jp/cloudsearch/latest/developerguide/limits.html
クエリ1回につき取得できる件数の上限は10000件まで
1回のリミットは10,000件だけど、URLパラメータにcursorつけることで次の10000件が取れるよ!最初に取得したcursorから30分かけて50回ほどクエリしたけど、問題なく取得できました。その間取得したレコードから削除のjson投げてますが、正常に全件取得・削除ができました。
項目追加、型変更したらインデックス再作成しないといけない
よく見ると項目一覧の上の方にメッセージが表示されてました。
インデックスの再構築が必要のようです。「Run Indexing」ボタンを押して、しばらく待ったら使えるようになりました。登録されているドキュメントの数によっても時間は変わりそうですね。
料金の上限設定とかできない
どの設定で動かしたか不明ですが、気付いたら10万円ぐらいつかってました。課金は稼働しているインスタンスが使われている時間がほぼ全てと言ってもいいぐらいかも。主に一括アップロードするときの並列処理のさせかたでガツンとスケールされてしまうので、最初の設定には気をつけましょう。
バッチの課金が1回0.10 USDだと思ってた
1000回に付き0.10 USDですね。
バッチの課金は安いけど、並列で登録することでオートスケール(課金対象)されるので、登録時間に余裕があれば直列とかウェイトかましてもよいかもです。
セキュリティの設定
設定できるのは以下のパターンのみ。(テキストエリアで直接編集することも可能!)
後からでも変更できます。
- 検索だけ誰でもOK
- 検索も登録も誰でもOK(おすすめしないやつ)
- IPで制限かける(カンマ区切りで複数OK)
- 非公開(コンソールからの利用のみ)
- 別のドメインからコピー
セキュリティグループの設定はなかったよ。(テキストを直接編集することでカスタマイズすることで利用できるようになるかも?。。調べきれてません)
数値項目の合計ができない!と思ったら、英語版の資料に書いてあった件
日本語ドキュメントに頼りすぎた。
http://docs.aws.amazon.com/cloudsearch/latest/developerguide/retrieving-stats.html
使わないCloudsearchを休止できない
deleteのみ。稼働している分だけ課金されるので、不要なものはバックアップとって削除しましょう。
インデックス作成には多少手間時間がかかるものの検索性能はすばらしいです!
(参考)