Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Recruit Style — How to Use Elasticsearch

Elastic Co
December 16, 2015

Recruit Style — How to Use Elasticsearch

Hiroshige Nakahara | Recruit Technologies | Tokyo | December 16, 2015

Elastic Co

December 16, 2015
Tweet

More Decks by Elastic Co

Other Decks in Technology

Transcript

  1. 2015/12   1   株式会社リクルートテクノロジーズ  インフラソリューション部 中原  裕成 0  

    リクルート流流Elasticsearchの使い⽅方 ⾃自⼰己紹介 •  ⽒氏名 §  中原  裕成 •  所属 §  株式会社リクルートテクノロジーズ ITソリューション統括部 インフラソリューション部 •  担当業務 §  Elasticsearchを⽤用いたサービスの運⽤用など 1
  2. 2015/12   2   もくじ 1.  はじめに §  リクルート/リクルートテクノロジーズとは? 2. 

    Elasticsearchの活⽤用例例 §  Qass / Pusna / サービス可視化 3.  Elasticsearchの運⽤用ノウハウ §  Plugin §  Snapshot §  index §  バージョンアップ 4.  さいごに 2 はじめに 3  
  3. 2015/12   3   旅⾏行行 IT/トレンド ⽣生活/地域情報 グルメ・美容 ライフスタイル領領域 ライフイベント領領域

    進学 就職 結婚 転職 住宅宅購⼊入 ⾞車車購⼊入 出産/育児 リクルートとは 4 「選択・意思決定」を⽀支援する情報サービスの提供 →「まだ、ここにない、出会い。」の実現へ リクルートテクノロジーズとは     リクルートキャリア     リクルートジョブズ     リクルートスタッフィング     リクルート住まいカンパニー     リクルートライフスタイル     リクルートマーケティングパートナーズ     スタッフサービス・ホールディングス   リクルートアドミニストレーション      リクルートコミュニケーションズ 事業会社 機能会社 インフラ部⾨門 ⼤大規模プロジェクト推進部⾨門 UI設計/SEO部⾨門 ビッグデータ機能部⾨門 テクノロジーR&D部⾨門 事業・社内IT推進部⾨門 リクルート ホールディングス リクルートとは、 主要7事業会社+3機能会社 で構成されるグループ企業群 5
  4. 2015/12   4   リクルートテクノロジーズの役割 6 開拓拓 実装、展開 運⽤用 テクノロジー

    ライフサイクル ≪テクノロジーへの考え⽅方≫ 「開拓拓」「実装・展開」を経た「運⽤用」でリクルートへの利利益貢献を⾏行行う。 リクルートテクノロジーズの役割 7 広範囲のビジネスに装着 し、効果を最⼤大化させる ための改善を⾏行行い、事業 貢献利利益を追究 Ø Rグループのビジネスに短・ 中期的に実活⽤用の可能性があ る技術をリサーチ Ø 対象技術における事業化への 検証を⾏行行い、評価・選定する 開拓拓(実活⽤用研究) 実際に事業へ適⽤用し、 より広範囲に利利⽤用す るための型化やス キームを構築 実装・展開 運⽤用 実施内容 リクルートテクノロジーズ(短・中期的視野) 利利益を⽬目的としない中⻑⾧長期的な視 点に⽴立立ち、新技術や新⼿手法の研究/ 発明を⾏行行い、論論⽂文発表することを ⽬目指す 要素基礎技術の研究 社外(中・⻑⾧長期的視野) 技術数の 推移イメージ 年年間約200の技術をリサーチし、 約30の技術を評価・選定 年年間数個〜~10個の 技術を展開 運⽤用フェーズまで 移⾏行行された技術が蓄積 無数の新技術を研究/発明
  5. 2015/12   5   Elasticsearchの活⽤用例例 8   Elasticsearchを⽤用いたサービス基盤 •  全社検索索基盤

    §  サイト内検索索に活⽤用 9 •  全社プッシュ通知基盤 §  リアルタイムな検索索要 件に活⽤用 •  各サービスの可視化 §  検索索⾏行行動の可視化に活 ⽤用 検索索 条件抽出 データ取得
  6. 2015/12   6   Elasticsearchを⽤用いたサービス基盤 •  全社検索索基盤 §  サイト内検索索に活⽤用 10

    •  全社プッシュ通知基盤 §  リアルタイムな検索索要 件に活⽤用 •  各サービスの可視化 §  検索索⾏行行動の可視化に活 ⽤用 •  更更新性能・検索索性能向 上 •  サイト毎のカスタマイ ズ性 •  リアルタイムな更更新の 利利⽤用 •  クラスタの運⽤用負荷低 減 •  可視化の運⽤用負荷低減 •  アドホックな可視化要 望への対応 全社検索索基盤: Qass Elasticsearchの活⽤用例例 11  
  7. 2015/12   7   各サービスサイト 各サービス検索索エンジン 検索索 これまでのリクルートの検索索 •  Apache

    Solrをコアエンジンとした構成 §  各サイトが独⽴立立した検索索エンジンを持つ構成 12 各サービスサイト 各サービス検索索エンジン 検索索 サイトA サイトB これまでのリクルートの検索索 •  Apache Solrをコアエンジンとした構成 13 各サービスサイト 各サービス検索索エンジン 更更新 同じ更更新を複数台に投げる必要がある 全ノードが全ドキュメントを持つ必要がある
  8. 2015/12   8   ? 検索索品質の継続的向上のために •  個別検索索エンジンを全社統⼀一検索索基盤へ §  情報を取りまとめて最適な検索索結果の継続的提供

    14 エンドユーザー 各サービスサイト 定期的(毎⽇日)な 検索索品質向上 商品検索索 検索索基盤へ検索索 サイトに合った検索索結果 検索索結果分析基盤 ? 検索索品質の継続的向上のために •  個別検索索エンジンを全社統⼀一検索索基盤へ §  情報を取りまとめて最適な検索索結果の継続的提供 15 エンドユーザー 各サービスサイト 定期的(毎⽇日)な 検索索品質向上 商品検索索 検索索基盤へ検索索 サイトに合った検索索結果 Solr構成のままでは 求める検索索性能・更更新性能に耐えられない 検索索結果分析基盤
  9. 2015/12   9   Solr利利⽤用時の課題 16 検索索性能 ドキュメント数増加時の パフォーマンス劣劣化が⼼心配 更更新性能

    クラスタ内のノード増加時の 更更新結果の反映時間が⼼心配 Solr Elasticsearch クラスタリング機能を標準装備 ノード間での分散検索索が可能 ノードを跨いだShard同期を標準実装 ノード間での分散更更新が可能 Elasticsearchを採⽤用した新検索索基盤の構築へ Solr4.0 リリース 当初 全社検索索基盤: Qassとは? •  リクルートの全社検索索基盤 §  Elasticsearchを検索索のコアエンジンとして利利⽤用 17 エンドユーザー 各サービスサイト 定期的(毎⽇日)な 検索索品質向上 商品検索索 検索索基盤へ検索索 サイトに合った検索索結果 検索索チーム 分析内容からの チューニング 検索索結果分析基盤
  10. 2015/12   10   全社検索索基盤: Qassとは? •  検索索品質の継続的向上を⾏行行う全社基盤 §  ⾃自⼰己成⻑⾧長型の検索索ソリューション

    18 検索索結果をQass基盤へ集約 •  検索索に関連する情報を⼀一箇所に集積 •  検索索結果を横断的に専⾨門家が集約・分析 •  機械学習による検索索品質向上 ユーザー⾏行行動に応じて 検索索品質向上を⾃自動的に⾏行行う 検索索結果分析基盤 サジェスト基盤 全社検索索基盤: Qassとは? •  検索索結果の展開 19 検索索結果分析基盤 集約された検索索結果の知⾒見見を利利⽤用 あ 検索 アーモンド アンテナ 改善効果可視化 検索索ロジック可視化
  11. 2015/12   11   検索索ロジック可視化 QassでのElasticsearchの使い⽅方 •  Qassを中⼼心とした検索索エコシステム 20 検索索結果分析基盤

    改善効果可視化 あ 検索 アーモンド アンテナ サジェスト基盤 サイトA サイトB 全社プッシュ通知基盤: Pusna-RS Elasticsearchの活⽤用例例 21  
  12. 2015/12   12   GCM Google  Cloud  Messaging 全社プッシュ通知基盤:Pusna-RS • 

    プッシュ通知とは? §  スマートフォンアプリを起動していなくても通知を送ることの出来る仕組み 22 Push! Push! APNs Apple  Push  Notification  Service プッシュ通知の効果 •  プッシュ通知は開封率率率が⾼高い §  メルマガに変わる販促ツールとして注⽬目されている 23 メリット •  休眠ユーザの再起 •  ユーザのアクティブ率率率向上 •  リアルタイムな情報配信 デメリット •  実装の⼯工数がかかる •  過剰なプッシュによるユーザ離離れのリ スク ここに対する取り組みとして、プッシュ 通知基盤を開発
  13. 2015/12   13   リクルート Pusna-RSの全体構成 24 デバイス管理理 プッシュ配信管理理 DynamoDB

    elasticsearch 登録API SQS 登録worker 配信worker SQS 操作⽤用WebUI 管理理API 配信担当者 データ基盤 APNs GCM 事業サーバ リクルート Pusna-RSの全体構成 25 デバイス管理理 プッシュ配信管理理 DynamoDB elasticsearch 登録API SQS 登録worker 配信worker SQS 操作⽤用WebUI 管理理API 配信担当者 データ基盤 APNs GCM 事業サーバ デバイス情報や配信情報の 実データの索索引として利利⽤用 (Doc数:億単位)
  14. 2015/12   14   Pusna-RSでのElasticsearchの使い⽅方 26   DynamoDB •  Pusna-‐‑‒RSでは複雑なデータ構造が不不要 • 

    RDBを使わずに全てのデータをKVSで管理理 •  DynamoDBはAWSにて提供されるNoSQL •  信頼性・⾼高速性・⾼高スケーラビリティからマスタとして採⽤用 •  並列列スキャンによる⾼高速な全件データ抽出が可能   elasticsearch •  DynamoDBはデータの検索索を苦⼿手とする •  補完するための検索索エンジンとして使⽤用 •  Solrと同じLuceneベースだが、リアルタイム更更新が可能なことから採⽤用。 Pusna-RSでのElasticsearchの使い⽅方 27 登録worker device/ hotpepper device/ jalan ・・・ elas5csearch   Device情報Table hotpepper Device情報Table jalan DynamoDB   管理理API & 配信worker •  同じデータをDynamoDBとElasticsearchに保存 §  ⽤用途に応じて適したデータソースを利利⽤用 単件&全件 条件指定&検索索
  15. 2015/12   15   各サービスの可視化 Elasticsearchの活⽤用例例 28   各サービスの可視化 29

    •  各サービスの定量量的な指標確認 §  ⽤用途に応じてデータを整理理・投⼊入・可視化 検索索結果の分析 検索索効果の可視化 サービスノード log サービスメトリクス の可視化 検索索結果分析基盤
  16. 2015/12   16   検索索基盤の可視化 30 •  検索索基盤チーム側で指標の可視化 §  利利⽤用者からのフィードバックを検索索基盤へ反映

    検索索効果の可視化 •  検索索改善施策で 効果の⾼高いもの は… •  ⾼高頻度度な検索索の ものは… 可視化からの解析 検索索基盤へのFB プッシュ基盤の可視化 31 •  デバイス登録状況・配信状況のリアルタイム可視化 §  利利⽤用者が次のプッシュ配信への改善に活⽤用 •  プッシュ後アプ リ起動の⾼高い時 間帯は… •  アプリ起動の⾼高 いプッシュ内容 は… 可視化からの解析 次回プッシュ配信 への活⽤用 •  配信時間改善 •  メッセージ改善 配信担当者
  17. 2015/12   17   可視化の横展開 32 •  可視化で得た知⾒見見を別のデータソースへ横展開 分析・知⾒見見獲得 可視化

    Reports  &  Analytics Webサーバログ サーバメトリクス Webビーコン 検索索結果 プッシュ利利⽤用実績 新たなデータソースの可視化 ログ分析基盤 Elasticsearchの運⽤用ノウハウ 33  
  18. 2015/12   18   Elasticsearch運⽤用ノウハウ •  Plugin機構の利利⽤用 §  Plugin機構を利利⽤用した 検索索クエリ改善

    §  Pluginの動的ロード §  PluginでのA/Bテスト 34 •  Snapshot機構の利利⽤用 §  オンラインバックアッ プ §  本番環境の複製 •  環境に合わせたIndex 作成 §  AWS(クラウド上)環境 §  オンプレミス環境 Qass  Plugin ICU  Plugin Kuromoji   Plugin …   Plugin Alias Alias Plugin機構の利利⽤用 Elasticseachの運⽤用ノウハウ 35  
  19. 2015/12   19   Plugin機構を利利⽤用したクエリ改善 •  ElasticsearchのPlugin機構を利利⽤用 §  公式サポートのPluginでIndexing内容を最適化 § 

    Qass独⾃自のPluginでクエリ最適化を実施 36 各サービスサイト Qass  Plugin •  検索索クエリの最適化 •  ソート順最適化 などを動的に実施 •  検索索クエリは従来通り ICU/Kuromoji   Plugin •  Indexing内容の最適化 Plugin機構を利利⽤用したクエリ改善 •  Qass独⾃自のPlugin機構 §  独⾃自のクラスローダによる動的Plugin更更新 §  サイト運営に影響を与えず検索索改善 o ⾼高速な検索索軸でのA/Bテスト可能な基盤を整備 37 各サービスサイト Qass  Plugin 検索索チーム 検索索ロジックA  v1 検索索ロジックB  v1 検索索ロジックB  v2 検索索チームで動的切切替
  20. 2015/12   20   Snapshot機構の利利⽤用 Elasticsearchの運⽤用ノウハウ 38   Elasticsearchのバックアップ  -

    Snapshotの内部利利⽤用例例 •  Elasticsearch標準装備のバックアップ機能 §  REST API実⾏行行で差分バックアップを⾃自動的に実施 39 S3 Disk プラグインを通して 様々なストレージへ保存可能 REST  API XXXX/XX/01 XXXX/XX/02 差分 差分保存で使⽤用容量量効率率率化 完了了までの負荷軽減
  21. 2015/12   21   Elasticsearchのバックアップ  - Snapshotの内部利利⽤用例例 •  Snapshot/Restore APIをJenkinsで定期実⾏行行

    §  実際の検索索結果を元に検索索改善を実施するクラスタを複製 40 Snapshot  API Snapshots サービス⽤用クラスタ 検索索改善⽤用クラスタ Restore  API 本番同等の内容で 検索索改善結果を確認可能な 環境を⾃自動的に⽣生成 Elasticsearchのバックアップ  - Snapshotの内部利利⽤用例例 •  検索索改善⽤用クラスタをデータサイエンティストに提供 §  データサイエンティストが⾃自由に検索索アルゴリズムを操作、確認可能 41 検索索改善⽤用クラスタ データサイエンティスト アルゴリズムの操作 結果の確認
  22. 2015/12   22   環境に合わせたIndex作成 Elasticsearchの運⽤用ノウハウ 42   環境に合わせたIndex作成⽅方法 • 

    環境によって異異なるIndex作成⽅方法を採⽤用 §  どのような環境でもサービス影響出さず安全な更更新が可能 43 AWS環境 サービス⽤用クラスタ (Blue⾯面) サービス⽤用クラスタ (Green⾯面) Blue-‐‑‒Green  Deploy でクラスタ切切替 オンプレミス環境 Index A Index B Doc Alias Alias River:差分更更新 Aliasで Index切切替 サービスノード サービスノード
  23. 2015/12   23   AWS環境でのIndex作成 •  AWSの特性を活かしてクラスタごと再構築 §  Indexing時のサービスへの負荷なくデプロイ 44

    サービス⽤用クラスタ (Blue⾯面) サービス⽤用クラスタ (Green⾯面) 分析基盤 サービス⽤用クラスタ (Blue⾯面) サービス⽤用クラスタ (Green⾯面) 分析基盤 結果分析 クラスタ構築& 分析結果Indexing 結果分析 クラスタ構築& 分析結果Indexing 現⾏行行Index 現⾏行行Index オンプレミス環境でのIndex作成 •  Indexの切切替をAliasを⽤用いて実現 §  サービス影響を出さずに新しいIndexをデプロイ 45 Index A Index B Doc Alias Alias River:差分更更新 Indexer 初期投⼊入 Index A Index B Alias Alias
  24. 2015/12   24   Elasticsearch運⽤用時の注意点 46   Elasticsearchの利利⽤用バージョン 47 Qass

    Pusna 利利⽤用 バージョン 0.9 1.4 1.5 1.7 出来るだけ最新バージョンを 利利⽤用するようにしているが、 リリースサイクルが早く 追いつききれていない バージョンアップの際はどのような対応が必要か?
  25. 2015/12   25   Elasticsearchのバージョンアップ •  0.9 -> 1.7へのバージョンアップ § 

    2バージョンのクラスタを⽤用意してリアルタイムで移⾏行行 48 v0.9  クラスタ v1.7  クラスタ 両⽅方へ書込 v0.9  クラスタ v1.7  クラスタ ⽚片バージョンを切切り離離し Elasticsearchのバージョンアップ •  0.9 -> 1.7へのバージョンアップ §  2バージョンのクラスタを⽤用意してリアルタイムで移⾏行行 49 v0.9  クラスタ v1.7  クラスタ 両⽅方へ書込 v0.9  クラスタ v1.7  クラスタ ⽚片バージョンを切切り離離し APIやレスポンスが変わっているため、 そのままの移⾏行行は不不可能
  26. 2015/12   26   まとめ 50   まとめ リクルートテクノロジーズではElasticsearchを積極活⽤用中し ています!

    @johtaniが主催するElasticsearch勉強会のスペースも提供し ており、得られたノウハウはその場で共有していきます! まずは今回お話した詳しい内容を、次回⾼高林林(@tatakaba)が 話す予定です! 51
  27. 2015/12   27   参考資料料 • Qass § Elasticsearch+Hadoopベースの⼤大規模検索索基盤⼤大解剖 § http://www.atmarkit.co.jp/ait/kw/elastic_̲hadoop.html • Pusna-‐‑‒RS § ⼤大規模プッシュ通知基盤⼤大解剖

    § http://www.atmarkit.co.jp/ait/kw/pushinfra.html • リクルートテクノロジーズについて § http://blog.recruit-‐‑‒tech.co.jp/ 52 53 リクルートテクノロジーズでは、 Elasticsearchを始めとした、 “先端技術”を使って⼀一緒に仕事をする仲間を募集しています!