cloud search勉強会 20150122

17

Upload: daisuke-mii

Post on 18-Jul-2015

111 views

Category:

Engineering


8 download

TRANSCRIPT

Page 1: Cloud search勉強会 20150122
Page 2: Cloud search勉強会 20150122

自己紹介名前:三位大介(みいだいすけ)

入社:2014年3月

経歴:Sier => webマーケ => カタリズム株式会社

持病:腰痛。ぎっくり腰によくなります。

検索周りの知識がほとんどない状態からCloudSearchを実装してみた経験をお話しさせていただきます。

Page 3: Cloud search勉強会 20150122

導入の背景検索件数の増加によって、パフォーマンスが大幅に悪化!

関連テーブル多い…ページング…

Page 4: Cloud search勉強会 20150122

View

Action

Service

DB

CloudSearch

前もって検索に必要なデータをあげておく

Page 5: Cloud search勉強会 20150122

クラウドサーチで何ができる

0テキストの全件検索

0ファセット

0サジェスト

0ハイライト

0地理空間検索

0オートスケーリング

Page 6: Cloud search勉強会 20150122

クラウドサーチの料金①

インスタンスタイプ 単価 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

Page 7: Cloud search勉強会 20150122

最初の10TB/月 次の40TB/月 次の100TB/月

$0.140/1GB $0.135/1GB $0.130/1GB

10TB/月 50TB/月 100TB/月

$1.400 $6.800 $13.300

■利用イメージ

クラウドサーチの料金②

■データ転送送信(アウト)

■データ転送受信(イン)

$0.000/GB

Page 8: Cloud search勉強会 20150122

実装あれこれ

1. AWS SDK for Java 1.9.11

2. ローカル・ステージング環境用、本番用に1ドメインずつ構築

3. インデックスフィールド:28

4. ドキュメント数:約4万件

Page 9: Cloud search勉強会 20150122

実装でつまづいたところ

1. ググっても情報がでてこない!

2. 10000件以上の検索の場合、方式が変わる

3. データ転送量(コスト)を抑えたい

4. 申し込み期限問題2日前の20時まで、1日前の18時まで・・・

Page 10: Cloud search勉強会 20150122

参考にしたサイト

1. 公式サイトhttp://docs.aws.amazon.com/ja_jp/cloudsea

rch/latest/developerguide/what-is-

cloudsearch.html

2. Cloudsearchスライドまとめhttp://sssslide.com/tags/8994/slides

Page 11: Cloud search勉強会 20150122

10000件以上の検索

Start=0

Size=50

Start=10001

Size=50

Cursor=XXXXX

Size=50

① ②

10001

■10000件以下の場合

■10000件を超える場合

Cursor=initial

Page 12: Cloud search勉強会 20150122

{"status": {

"rid": "z67+3L0oHgo6swY=","time-ms": 7

},"hits": {

"found": 1649,"start": 0,"cursor": "Vb-HSS4YQW9JSVFKeFpvQ2wwZERBek16SXpOems9Aw","hit": [

{"id": "tt0397892"

},...{

"id": "tt0332379"}

]}

}

■cursor=initial, size=100 で検索した結果

Page 13: Cloud search勉強会 20150122

取得データの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"

}} ]

}}

Page 14: Cloud search勉強会 20150122

申込み期限問題

結論:あきらめた!

0申込み可能日付をフィールドに作ったけど、毎時バッチ回さなきゃダメ!

0時間ごとのフィールドを作ってデータをいれる。データの量が多くなるし運用が複雑…。

期限が切れるものはひっかからないようにした。

良い案があったら教えてください・・・!

Page 15: Cloud search勉強会 20150122

導入してみた結果■パフォーマンス比較 (全件(約4万件)検索の場合)

導入前 約1733ms

導入後 約511ms

導入前の3割程度に改善!!

Page 16: Cloud search勉強会 20150122

クラウドサーチの不満点

1. クエリエラーのログが明確に確認できないのでどんなクエリをなげてエラーになっているかわからない?

2. 全件削除がない

Page 17: Cloud search勉強会 20150122

おわり