SlideShare a Scribd company logo
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

More Related Content

PPTX
世界一わかりやすいClean Architecture
PDF
Kubernetesによる機械学習基盤への挑戦
PDF
AWSではじめるMLOps
PPTX
グラフデータベース入門
PPTX
Redisの特徴と活用方法について
PDF
Apache Solr 検索エンジン入門
PDF
The Twelve-Factor Appで考えるAWSのサービス開発
PDF
例外設計における大罪
世界一わかりやすいClean Architecture
Kubernetesによる機械学習基盤への挑戦
AWSではじめるMLOps
グラフデータベース入門
Redisの特徴と活用方法について
Apache Solr 検索エンジン入門
The Twelve-Factor Appで考えるAWSのサービス開発
例外設計における大罪

What's hot (20)

PPTX
テストコードの DRY と DAMP
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
PPTX
MongoDBが遅いときの切り分け方法
PDF
Dockerfile を書くためのベストプラクティス解説編
PPTX
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
PDF
マイクロサービス 4つの分割アプローチ
PDF
20190911 AWS Black Belt Online Seminar AWS Batch
PPT
Cassandraのしくみ データの読み書き編
PDF
3分でわかるAzureでのService Principal
PDF
ナレッジグラフ入門
PDF
人生がときめくAPIテスト自動化 with Karate
PDF
イミュータブルデータモデル(世代編)
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PDF
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
PDF
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
PPTX
MLOpsはバズワード
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PDF
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
PDF
Pythonによる黒魔術入門
テストコードの DRY と DAMP
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
MongoDBが遅いときの切り分け方法
Dockerfile を書くためのベストプラクティス解説編
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
マイクロサービス 4つの分割アプローチ
20190911 AWS Black Belt Online Seminar AWS Batch
Cassandraのしくみ データの読み書き編
3分でわかるAzureでのService Principal
ナレッジグラフ入門
人生がときめくAPIテスト自動化 with Karate
イミュータブルデータモデル(世代編)
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
MLOpsはバズワード
SPAセキュリティ入門~PHP Conference Japan 2021
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Pythonによる黒魔術入門
Ad

Similar to SolrとElasticsearchを比べてみよう (14)

PDF
はじめての検索エンジン&Solr 第13回Solr勉強会
PDF
第15回Solr勉強会 - Solr at Yahoo! JAPAN #SolrJP
PDF
elasticsearchプラグイン入門
PDF
徹底比較!! Heliosearch vs Solr
PPTX
Lucene/Solr Revolution 2016 参加レポート
PPTX
solr勉強会資料
PPTX
技術勉強会(Solr入門編)
PPTX
Apache Solr 入門
PDF
Serving Engine as a Service at Yahoo! JAPAN #SolrJP
PPTX
CROSS 2015 全文検索群雄割拠
ODP
pixiv サイバーエージェント共同勉強会 solr導入記
PDF
Solr勉強会第10回
PPTX
SunspotではじめるSolr入門
KEY
AlfrescoとSolr(中編)
はじめての検索エンジン&Solr 第13回Solr勉強会
第15回Solr勉強会 - Solr at Yahoo! JAPAN #SolrJP
elasticsearchプラグイン入門
徹底比較!! Heliosearch vs Solr
Lucene/Solr Revolution 2016 参加レポート
solr勉強会資料
技術勉強会(Solr入門編)
Apache Solr 入門
Serving Engine as a Service at Yahoo! JAPAN #SolrJP
CROSS 2015 全文検索群雄割拠
pixiv サイバーエージェント共同勉強会 solr導入記
Solr勉強会第10回
SunspotではじめるSolr入門
AlfrescoとSolr(中編)
Ad

More from Shinsuke Sugaya (19)

PDF
社内ドキュメント検索システム構築のノウハウ
PDF
LastaFluteでKotlinをはじめよう
PDF
Fess/Elasticsearchを使った業務で使える?全文検索への道
PDF
PredictionIOでSparkMLを使った開発方法
PDF
PredictionIOのPython対応計画
PDF
PredictionIO構築入門
PDF
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
PDF
Elasticsearchベースの全文検索システムFess
PDF
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
PDF
Elasticsearchで作る形態素解析サーバ
PDF
ElasticsearchとTasteプラグインで作るレコメンドシステム
PDF
Elasticsearchプラグインの作り方
PDF
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
PDF
Elasticsearch Authプラグインでアクセスコントロール
PDF
DBFlute Mavenプラグインを用いてCRUD作成
PDF
DBFluteを用いて開発されている全文検索システムFess
PDF
Solrベースの全文検索サーバ Fess
PDF
Sc2009autumn s2robot
PDF
オフィスに1台!全文検索Fess
社内ドキュメント検索システム構築のノウハウ
LastaFluteでKotlinをはじめよう
Fess/Elasticsearchを使った業務で使える?全文検索への道
PredictionIOでSparkMLを使った開発方法
PredictionIOのPython対応計画
PredictionIO構築入門
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
Elasticsearchベースの全文検索システムFess
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
Elasticsearchで作る形態素解析サーバ
ElasticsearchとTasteプラグインで作るレコメンドシステム
Elasticsearchプラグインの作り方
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
Elasticsearch Authプラグインでアクセスコントロール
DBFlute Mavenプラグインを用いてCRUD作成
DBFluteを用いて開発されている全文検索システムFess
Solrベースの全文検索サーバ Fess
Sc2009autumn s2robot
オフィスに1台!全文検索Fess

SolrとElasticsearchを比べてみよう