15. Amazon CloudSearch Overview
! Amazon CloudSearch
• A9 internal engine ! Apache Lucene/Solr
– 2014年年3⽉月のリリースでLucene/Solrベースになりました ☺
• Take advantage of Solr features, especially languages
– 特に⾔言語周り
– CloudSearchの⽇日本語のサポートはSolrベースになってから
• Easier to get started for new engineers
– プロプライエタリなものより馴染みのあるもの
• Apache Software Foundation project, with a defined
process to contribute. No need to fork.
– こちらは後ほどもう少し詳しく
16. Amazon CloudSearch Overview
! Amazon CloudSearch in Amazon
• Amazonの中でも様々なところで使われています。その中の⼀一部をご紹介
amazon smile : Support Local Charities/10s of millions of products
https://smile.amazon.com/
17. Amazon CloudSearch Overview
! Amazon CloudSearch in Amazon
• Amazonの中でも様々なところで使われています。その中の⼀一部をご紹介
goodreads : 30 million members/900 million books/34 million reviews
https://www.goodreads.com/
19. CloudSearch Feature
! Per-‐‑‒Field Language Control
※ “Multiple Languages”はCJKの場合Bi-‐‑‒gramによるインデクシング
20. ! Highlighting
CloudSearch Feature
/searchq=iron+manhighlight.plot={format:text}
hit: [{
id: tt1228705,
fields: {
title: Iron Man 2”
},
highlights: {
plot: Tony Stark has declared himself
*Iron* *Man* and installed world...
} },...
24. • Term Boosting
CloudSearch Feature
– (or 'man' 'woman')q.parser=structured
When a Man Loves a Woman
Wonder Woman
The Woman in Black”
...
– (or (term boost=5 'manʼ’) 'woman')q.parser=structured
The Lawnmower Man
Dead Man
Repo Man”
...
35. Apache Lucene/Solrへのコントリビューション
Expressions
! Build arbitrary scoring functions using Javascript-‐‑‒like syntax.
! Can refer to other fields and/or other expressions.
! Are compiled at runtime.
! To be added in Solr: SOLR-‐‑‒5707
// compile an expression:
Expression expr = JavascriptCompiler.compile(sqrt(_̲score) + ln(popularity));
// we use SimpleBindings: which just maps variables to SortField instances
SimpleBindings bindings = new SimpleBindings();
bindings.add(new SortField(_̲score, SortField.Type.SCORE));
bindings.add(new SortField(popularity, SortField.Type.INT));
// create a sort field and sort by it (reverse order)
Sort sort = new Sort(expr.getSortField(bindings, true));
Query query = new TermQuery(new Term(body, contents));
searcher.search(query, null, 3, sort);
36. Apache Lucene/Solrへのコントリビューション
Jack が作った 『Simple Query Parser』
! Parse human readable query syntax
! Can enable / disable “operations”
! Really Simple
! JackはVertical Keyboard使ってる ☺
37. Amazon CloudSearch Deep Dive
! Agenda
• Who am I
• Amazon CloudSearch Overview
• Amazon CloudSearch Update
• Inside Amazon CloudSearch
• Amazon CloudSearch Pro Tips
• Wrap up
38. Amazon CloudSearch Update
! 2014年年3⽉月のローンチに関してはWebinarの資料料
AWS Black Belt Tech Webinar 毎週⽔水曜18時〜~
http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-cloudsearch
63. ! Amazon CloudSearch の Data Scaling
Index
Index P1
Amazon Index P2
EMR
§ スケールアップでまかなえなくなったらEMR
(AWSのHadoopサービス)でインデックスを分割してスケールアウト
§ 分割中は古いインスタンスがリクエストを受け付けるので
”No downtime”でサービスを継続
§ 但し Eventual Consistency なモデルなので考慮は必要
64. ! Amazon CloudSearch で Configuration が変更更された時
Index A
Amazon
EMR
Index B
§ 検索索ドメインの設定が変更更されてインデックスをやり直さなければな
らない場合は裏裏でEMRで実⾏行行
§ 新しいインデックス作成中は古いインデックスでリクエストを受け付
けるので”No downtime”でサービスを継続
66. Amazon CloudSearch Deep Dive
! Agenda
• Who am I
• Amazon CloudSearch Overview
• Amazon CloudSearch Update
• Inside Amazon CloudSearch
• Amazon CloudSearch Pro Tips
• Wrap up
67. Amazon CloudSearch Pro Tips
! 11⽉月に開催された『AWS re:Invent 2014』にて Jon Handler が
Amazon CloudSearchの”Deep Dive and Best Practices”で登壇
• Jonは5⽉月にCloudSearchを
紹介しに東京に来てくれました!
68. Amazon CloudSearch Pro Tips
! Pro Tips 1: Use Maximum Batches
• CloudSearchは上限5MB(ドキュメント数は収まる範囲ならいくつでもOK)で
インデクシングしていただくのが最も⾼高いスループットで低いレイテンシ
• 1000件のインデクシングリクエスト毎に0.10USDなので、コスト的にも有利利
• ⼿手前にSQSを挟んで処理理していただくケースも
• SDK/CLIの CloudSearchDomainでインデクシングしていただくと便便利利
例例: $ aws cloudsearchdomain upload-‐‑‒documents〜~
69. Amazon CloudSearch Pro Tips
! Pro Tips 2: Increase Instance type for load-‐‑‒in
• 多重度度を上げてデータ投⼊入で短時間に⼤大量量データのインデクシングをする
• ⼤大量量のQueryが発⽣生する際はDesiredでレプリケーション数を上げておく
• インスタンスタイプ毎のデータ量量やスレッド数の⽬目安の紹介も!
70. Amazon CloudSearch Pro Tips
! Pro Tips
• 他にも様々なTipsが紹介されているので是⾮非ご覧ください!
• 発表資料料: http://goo.gl/pklAzW
• Youtube: http://youtu.be/OeHaj1a66I4
71. Amazon CloudSearch Deep Dive
! Wrap up
• CloudSearchは⽇日本でも様々なサービスで利利⽤用されています
• CloudSearchはフルマネージドなクラウド型検索索エンジンです
• CloudSearchは2014年年に様々なアップデートを⾏行行いました
• CloudSearchはLucene/SolrにContributeしています
• CloudSearchはAWSの様々なサービスを利利⽤用しています
• CloudSearchのTipsが公開されているので是⾮非御覧ください