Anzeige
Anzeige

Más contenido relacionado

Presentaciones para ti(20)

Similar a SolrとElasticsearchを比べてみよう(20)

Anzeige
Anzeige

SolrとElasticsearchを比べてみよう

  1. SolrとElasticsearchを比べてみよう Tech Talks
  2.  名前: 菅谷信介  所属: N2SM, Inc.  オープンソース活動:  Apache Portals (Jetspeed2など) コミッタ  Seasarプロジェクトコミッタ(S2Container, Teeda, SAStruts, DBFlute, S2Portlet, S2Robot..)  Fessプロジェクト運営 などなど・・・  Github: https://github.com/codelibs  Blog: http://www.chazine.com/  Twitter: https://twitter.com/shinsuke_sugaya/ 自己紹介
  3. アジェンダ  Solrとは  Elasticsearchとは  SolrとElasticsearchの比較  まとめ
  4. 検索ライブラリ Luceneなど 検索サーバ Solr、Elasticsearch、groongaなど 検索サーバ+クローラ Hyper Estraier、Namazu、Nutchなど 検索システム Fess、商用検索システム(GSAとか) 検索関連のソフトウェア まず、検索業界的な話… 検索関連の知識が必要 検索関連の知識なくても利用可能
  5. Apache Solr
  6.  オープンソースのエンタープライズ検索プラットフォーム  開発元:Apache Software Foundation (2007~)  特徴  高度な全文検索機能  大量のウェブトラフィックに最適化  XML, JSONやHTTPのインターフェース  包括的なHTMLの管理画面  監視用にJMXで利用可能なサーバ統計情報  リニアにスケール可能、自動インデックスレプリケー ション、自動フェールオーバーと復旧  リアルタイムインデクシング  XMLでの柔軟なカスタマイズ性  拡張可能なプラグインアーキテクチャ Apache Solr http://lucene.apache.org/solr/
  7.  最近、リリースのペースが速い  全文検索としては実績や信頼性が高い  政治的なところでゴタゴタしている  Elasticsearchとの競い合っている気がする  SolrCloudはElasticsearchと比べてしまうと作る のがちょっと面倒  サジェストが日本語環境で使いにくい  まるっと全文検索システムがほしいならFessだね Solrへの個人的な感想
  8. Elasticsearch
  9.  オープンソースの分散リアルタイム検索&分析エンジン  開発元:Elasticsearch (2010~)  特徴  リアルタイムデータが扱える  リアルタイム分析  分散環境(スケールできる)  高可用性  マルチテナント  全文検索  ドキュメント志向  衝突管理(楽観的バージョン制御)  スキーマフリー  RESTful API  操作単位での永続性(トランザクションログ) Elasticsearch http://www.elasticsearch.org/
  10.  月一くらいでリリースしてくる  Webサイトのドキュメントがわかりにくいので、 情報はググるのが良い  スキーマフリーはあまり現実的ではない  Elasticsearchの企業としては、かなりの投資され ている (お金がありそう)  LuceneのコミッターがElasticsearchに流れている  クラスタを組むのは非常に簡単  プラグインを作れば簡単に拡張ができる  問題に遭遇したら、解決にはそれなりのスキルが 必要… Elasticsearchへの個人的な感想
  11. 比較 個人的な観点でまとめる…
  12. 一応… 世の中には http://solr-vs-elasticsearch.com/ という感じでまとめてくれる人もいるので 細かいことはそのあたりを 見ると良いかも…
  13. 検索クエリー Solr  「Foo Bar」のようなクエリー文字列  わかりやすいが、複雑なものは微妙かも  リクエストパラメータで指定 (ファセット等) Elasticsearch  構造的なクエリーDSL  慣れれば複雑なクエリーも書きやすい  RESTfulなAPI  Solrな人はquery_stringから使いはじめると良い かも… Solrは直観的、Elasticsearchは学習コストがあるが クエリーDSLは慣れれば使いやすい
  14. 検索クエリー(例) Solr http://…/select/?wt=json&indent=on&q=video+card&fl =name,id&hl=true&hl.fl=name Elasticsearch { “query” : { "query_string" : { "default_field" : "content", "query" : "this AND that OR thus" } }, “size”: 10 }
  15. 高度な検索 共通  空間検索、ファセット、類似文書検索、フィルタ クエリー、ハイライト、スクロール取得、など Solr  Results Groupingが可能 (Elasticsearch 1.3で同様のことが可能になるらしい…) Elasticsearch  Percolatorが可能  Aggregationは分析には便利 多少の差はあるが互いに実装される可能性はある
  16. API Solr  XML, CSV, JSON, バイナリでの応答が可能  クライアントライブラリはSolrJやサードパーティ 製がいろいろある Elasticsearch  JSON, YAML, SMILE, バイナリでの応答が可能  バイナリでの通信はTransportClientを利用  クライアントライブラリはサードパーティ製がい ろいろある どちらも大差はないが、Elasticsearchの ドキュメント志向の方がわかりやすいかも
  17. アーキテクチャ Solr  サーブレットベース  solrconfig.xmlで独自にコンポーネント管理 Elasticsearch  API等の通信まわりはNettyを利用  Guiceベースのコンポーネント管理 Guiceでコンポーネント管理されているので Elasticsearchの方がコードはすっきりしている
  18. インデックス構造 Solr  コア単位にドキュメントが保存される SolrCloud  コレクション単位にドキュメントが保存される  コレクションは複数のシャードで構成される  シャードは複数のノードに配置される Elasticsearch  インデックス単位にドキュメントが保存される  インデックスは複数のシャードで構成される  シャードは複数のノードに配置される
  19. インデックス構造(図) Solr SolrCloud/Elasticsearch Core Shard Index/Collection Shard Shard Shard Index/Collection Cluster Core
  20. スキーマ(データ型) Solr  schema.xmlにフィールド型を指定する  Solr 4.4からスキーマレスも可能 Elasticsearch  何もしないとスキーマレスで利用可能  typeごとにmappingで指定する スキーマレスでも利用可能だが きちんと定義して利用するのが安全
  21. クラスタ Solr  SolrCloudを構築する  ZooKeeperでノード管理する Elasticsearch  起動すればクラスタになる  ZenDiscoveryでノード管理する  ZenDiscovery以外の方法でもノード管理が可能  自動でシャードのリバランスが可能 Elasticsearchは標準でクラスタ構成を 意識しているので、構築が容易
  22. 分散検索 Solr  shardsリクエストパラメータで指定する SolrCloud  SolrJのCloudSolrServerを利用する (ZooKeeperを利用) Elasticsearch  デフォルトで分散検索  search_typeやpreferenceなどで調整できる Elasticsearchの方が分散検索の パラメータのチューニングしやすい
  23. リアルタイム Solr  ソフトコミットで対応可能  solrconfig.xmlで設定する Elasticsearch  デフォルトは1秒でrefresh反映される  30分でflushされる  各インデックスに対して設定する どちらも同じようなことはできるが、 Solrは検索パフォーマンス、 Elasticsearchは情報の質、を意識している
  24. 拡張性 Solr  拡張したいインターフェースを実装し、Jarファイ ルにまとめて配置し、solrconfig.xml等で設定する  拡張したい部分の機能の知識が必要 Elasticsearch  プラグインの仕組みにしたがって作成する  pluginコマンドでインストール  プラグインの種類  Analysis, Discovery, River, Transport, Scripting, Site, Repository, … Elasticsearchの方が拡張・機能追加がしやすい
  25. バージョン Solr  Luceneと一緒にリリースされてくる  現状に問題がなければ、積極的にバージョンを上 げに行く理由はない (と思う) Elasticsearch  月一などのペースでリリースされてくる  クラスタまわりなど、いろいろと変更が入るため、 できるだけバージョンアップに追随する方が良い  1.0からローリングアップグレードも可能 しばらくはElasticsearchは積極的に バージョンを上げた方が良いかも…
  26. 将来性 Solr  検索プラットフォームを目指していく(と思う)  全文検索観点では今後も開発され、安定した利用 ができる(と思う) Elasticsearch  ELKスタック的な感じで波に乗っている  スケールできる利点で今後も伸びていく(と思う)  分析やログのストア先として期待できる(と思う) Luceneベースだし、使い分けではないか…
  27. まとめ
  28. まとめ  SolrもElasticsearchもLuceneベースであるので、 検索観点で大きく異なる部分は少ない  全文検索として、信頼性が求めるならSolr  スケールすることを考えるのであれば、SolrCloud かElasticsearch  SolrのスペシャリストがいるならSolrCloudが良い が、そうでなければElasticsearchで良いと思う  分析とか、集計情報を扱いたければElasticsearch  問題に遭遇した時にはElasticsearchの方が解決す るための難易度が高いと思う
  29. 補足 ちょっと宣伝…  N2SM, Inc.ではFess/Solr/Elasticsearchなどの 検索ソリューションに関する導入・開発支援を 提供しています http://www.n2sm.net/
  30. Q&A
Anzeige