SlideShare a Scribd company logo
1 of 30
Download to read offline
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

What's hot

What's hot (20)

Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
 

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

Solrベースの全文検索サーバ Fess
Solrベースの全文検索サーバ FessSolrベースの全文検索サーバ Fess
Solrベースの全文検索サーバ Fess
Shinsuke Sugaya
 

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

DBFluteを用いて開発されている全文検索システムFess
DBFluteを用いて開発されている全文検索システムFessDBFluteを用いて開発されている全文検索システムFess
DBFluteを用いて開発されている全文検索システムFess
 
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
 
Elasticsearch Authプラグインでアクセスコントロール
Elasticsearch AuthプラグインでアクセスコントロールElasticsearch Authプラグインでアクセスコントロール
Elasticsearch Authプラグインでアクセスコントロール
 
Renewed using elasticsearchonaspnet-core5
Renewed using elasticsearchonaspnet-core5Renewed using elasticsearchonaspnet-core5
Renewed using elasticsearchonaspnet-core5
 
Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127
 
Solrベースの全文検索サーバ Fess
Solrベースの全文検索サーバ FessSolrベースの全文検索サーバ Fess
Solrベースの全文検索サーバ Fess
 
ElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステムElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステム
 
オフィスに1台!全文検索Fess
オフィスに1台!全文検索Fessオフィスに1台!全文検索Fess
オフィスに1台!全文検索Fess
 
Elasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバElasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバ
 
Integrating elasticsearch with asp dot net core
Integrating elasticsearch with asp dot net coreIntegrating elasticsearch with asp dot net core
Integrating elasticsearch with asp dot net core
 
JJUG CCC 2014 ATL
JJUG CCC 2014 ATLJJUG CCC 2014 ATL
JJUG CCC 2014 ATL
 
Elastic Aquia Joint webinar-20211006
Elastic Aquia Joint webinar-20211006Elastic Aquia Joint webinar-20211006
Elastic Aquia Joint webinar-20211006
 
elasticsearchプラグイン入門
elasticsearchプラグイン入門elasticsearchプラグイン入門
elasticsearchプラグイン入門
 
Apache Solr 入門
Apache Solr 入門Apache Solr 入門
Apache Solr 入門
 
スマートニュースの世界展開を支えるログ解析基盤
スマートニュースの世界展開を支えるログ解析基盤スマートニュースの世界展開を支えるログ解析基盤
スマートニュースの世界展開を支えるログ解析基盤
 
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月
 
Azure Datalake 大全
Azure Datalake 大全Azure Datalake 大全
Azure Datalake 大全
 
全文検索入門
全文検索入門全文検索入門
全文検索入門
 
Learn, build, and scale with elastic - realizing great programming experience...
Learn, build, and scale with elastic - realizing great programming experience...Learn, build, and scale with elastic - realizing great programming experience...
Learn, build, and scale with elastic - realizing great programming experience...
 
Azure kobebase lt-20201120
Azure kobebase lt-20201120Azure kobebase lt-20201120
Azure kobebase lt-20201120
 

More from Shinsuke Sugaya

More from Shinsuke Sugaya (12)

社内ドキュメント検索システム構築のノウハウ
社内ドキュメント検索システム構築のノウハウ社内ドキュメント検索システム構築のノウハウ
社内ドキュメント検索システム構築のノウハウ
 
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめようLastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
 
Fess/Elasticsearchを使った業務で使える?全文検索への道
Fess/Elasticsearchを使った業務で使える?全文検索への道Fess/Elasticsearchを使った業務で使える?全文検索への道
Fess/Elasticsearchを使った業務で使える?全文検索への道
 
PredictionIOでSparkMLを使った開発方法
PredictionIOでSparkMLを使った開発方法PredictionIOでSparkMLを使った開発方法
PredictionIOでSparkMLを使った開発方法
 
PredictionIOのPython対応計画
PredictionIOのPython対応計画PredictionIOのPython対応計画
PredictionIOのPython対応計画
 
PredictionIO構築入門
PredictionIO構築入門PredictionIO構築入門
PredictionIO構築入門
 
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
 
Elasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFessElasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFess
 
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
 
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
 
DBFlute Mavenプラグインを用いてCRUD作成
DBFlute Mavenプラグインを用いてCRUD作成DBFlute Mavenプラグインを用いてCRUD作成
DBFlute Mavenプラグインを用いてCRUD作成
 
Sc2009autumn s2robot
Sc2009autumn s2robotSc2009autumn s2robot
Sc2009autumn s2robot
 

Recently uploaded

Recently uploaded (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

SolrとElasticsearchを比べてみよう