×
  • Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
 

SolrとElasticsearchを比べてみよう

on

  • 457 views

SolrとElasticsearchに関して独自の観点で比較してまとめています。

SolrとElasticsearchに関して独自の観点で比較してまとめています。
(実際に比較検討が必要な場合は、ご自身で実施されるのが良いと思います)

Statistics

Views

Total Views
457
Views on SlideShare
433
Embed Views
24

Actions

Likes
6
Downloads
1
Comments
0

2 Embeds 24

https://twitter.com 18
http://s.deeeki.com 6

Accessibility

Categories

Upload Details

Uploaded via SlideShare as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
Post Comment
Edit your comment

    SolrとElasticsearchを比べてみよう SolrとElasticsearchを比べてみよう Presentation Transcript

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