cloud search勉強会 20150122
TRANSCRIPT
自己紹介名前:三位大介(みいだいすけ)
入社:2014年3月
経歴:Sier => webマーケ => カタリズム株式会社
持病:腰痛。ぎっくり腰によくなります。
検索周りの知識がほとんどない状態からCloudSearchを実装してみた経験をお話しさせていただきます。
導入の背景検索件数の増加によって、パフォーマンスが大幅に悪化!
関連テーブル多い…ページング…
View
Action
Service
DB
CloudSearch
前もって検索に必要なデータをあげておく
クラウドサーチで何ができる
0テキストの全件検索
0ファセット
0サジェスト
0ハイライト
0地理空間検索
0オートスケーリング
クラウドサーチの料金①
インスタンスタイプ 単価 1日あたり 1月あたり
Search.m1.small $0.082/h $1.968 $59.04
Search.m1.large $0.328/h $7.872 $236.16
Search.m2.xlarge $0.359/h $8.616 $258.48
Search.m2.2xlarge $0.719/h $17.256 $517.68
バッチアップロード $0.10/1000件
インデックス構築 $0.98/GB
最初の10TB/月 次の40TB/月 次の100TB/月
$0.140/1GB $0.135/1GB $0.130/1GB
10TB/月 50TB/月 100TB/月
$1.400 $6.800 $13.300
■利用イメージ
クラウドサーチの料金②
■データ転送送信(アウト)
■データ転送受信(イン)
$0.000/GB
実装あれこれ
1. AWS SDK for Java 1.9.11
2. ローカル・ステージング環境用、本番用に1ドメインずつ構築
3. インデックスフィールド:28
4. ドキュメント数:約4万件
実装でつまづいたところ
1. ググっても情報がでてこない!
2. 10000件以上の検索の場合、方式が変わる
3. データ転送量(コスト)を抑えたい
4. 申し込み期限問題2日前の20時まで、1日前の18時まで・・・
参考にしたサイト
1. 公式サイトhttp://docs.aws.amazon.com/ja_jp/cloudsea
rch/latest/developerguide/what-is-
cloudsearch.html
2. Cloudsearchスライドまとめhttp://sssslide.com/tags/8994/slides
10000件以上の検索
Start=0
Size=50
Start=10001
Size=50
Cursor=XXXXX
Size=50
① ②
10001
■10000件以下の場合
■10000件を超える場合
Cursor=initial
{"status": {
"rid": "z67+3L0oHgo6swY=","time-ms": 7
},"hits": {
"found": 1649,"start": 0,"cursor": "Vb-HSS4YQW9JSVFKeFpvQ2wwZERBek16SXpOems9Aw","hit": [
{"id": "tt0397892"
},...{
"id": "tt0332379"}
]}
}
■cursor=initial, size=100 で検索した結果
取得データのfieldをしぼるreturnパラメータに「_no_fields」を渡すとfieldを返さなくなる。
{"status" : {"rid" : "y9Dzhs8oEwqMHnk=","time-ms" : 2
},"hits" : {"found" : 76,"start" : 0,"hit" : [ {"id" : "tt1411664","fields" : {"title" : "Bucky Larson: Born to Be a Star","_score" : "9.231539"
}}, {"id" : "tt1911658","fields" : {"title" : "The Penguins of Madagascar","_score" : "7.1051397"
}} ]
}}
申込み期限問題
結論:あきらめた!
0申込み可能日付をフィールドに作ったけど、毎時バッチ回さなきゃダメ!
0時間ごとのフィールドを作ってデータをいれる。データの量が多くなるし運用が複雑…。
期限が切れるものはひっかからないようにした。
良い案があったら教えてください・・・!
導入してみた結果■パフォーマンス比較 (全件(約4万件)検索の場合)
導入前 約1733ms
導入後 約511ms
導入前の3割程度に改善!!
クラウドサーチの不満点
1. クエリエラーのログが明確に確認できないのでどんなクエリをなげてエラーになっているかわからない?
2. 全件削除がない
おわり