Elasticsearch Cluster Runner

Elasticsearch関連の開発をしていると、クラスタ環境とかでのテストとかを使いたくなるケースがあると思う。Elasticsearchはクラスタ環境を簡単に作れるけど、わざわざ複数のインスタンスを立ち上げてとかは面倒だな、と思っていたので、ElasticsearchのInternalNodeを使って、Ⅰつのインスタンスで複数のElasticsearchのノードを起動できるElasticsearch Cluster Runnerを作ってみました。
JavaとMavenがインストールされた環境であれば、

git clone https://github.com/codelibs/elasticsearch-cluster-runner.git

として、プロジェクトをcloneして、あとは

mvn exec:java

とすれば、3ノードのElasticsearchクラスタが起動します。
-basePathオプションでElasticsearchのルートディレクトリを指定することはできるけど、デフォルトではes_homeディレクトリが作成されてそこを利用されます。logsとかはノードごとにそこ以下にディレクトリが作成されます。
-numOfNodeを変更すればノード数も変更することができます。
あとは使いながら、改善していこうかと…。

Solr 4.8への更新

もっとこまめにいろいろと書きたいとは思うものの、なかなかそこまで手が回っていない今日このごろ…。そんな感じですが、今日はSolr 4.8に上げるときに注意したほうがよさそうな点を書いておく。

  • SOLR-5228: schema.xmlでが要らなくなった
  • SOLR-5936: 5.0で消えるフィールドタイプがある

あたりかと。あとは、いまいち原因が追えていませんが、defTypeの指定の問題なのか、mmの動きが怪しい気がしてます…。Fessではmm=100%で使っていたのですが、動きが怪しいのでmmを使うのをやめて、クエリの中で明示的にANDにしていままでの動きを維持することにしました。

全文検索業界?

FessとかをSolrやElasticsearchとかと比較とかされちゃうケースがあるのだけど、それはちょっと違う感じなのでざっくりまとめておく。ざっくりとカテゴリ分けすると、以下のような感じかと思う(まぁ、いろいろな考え方はあると思うが…)。

検索ライブラリ

検索システムを構築するためのコアなライブラリ。HTTPなどで呼び出すのではなく、組み込んで使う感じ。検索屋さんになりたい人向けで、システム構築屋さん向けではない。

(他にメジャーなのあったっけ…)

検索エンジン

HTTPなどでAPIを提供し、構築したいシステム連携して利用する。検索もチューニングしたいシステム構築屋さん向け。なので、検索についても設計等が必要なので、検索に関するナレッジは必要になる。

検索サーバ

検索エンジンのようにシステム連携も可能なことに加えて、クロールする機能を持っていたり、実用的ですぐに利用可能な検索結果を表示するUIを持つ。連携するシステム構築に注力して、検索機能を手軽に追加したい場合や検索システムとしてそのものを導入したい場合など向け。

  • Fess
  • namazu (実用的なUIかは微妙、今となっては性能面も微妙)
  • Google Search Appliance, ConceptBase, QuickSolution, WiSE, SAVVYなどの各種商用検索サーバ (検索エンジンとして切り出して提供しているものもあるが…)

という感じかと思います(何かあればご指摘ください)。
そんなわけなので、FessはSolrやElasticsearchと目指すところは異なりますし、より多くの人が手軽に利用できるものを目指しています。なので、競合は商用の検索サーバたちと言えるでしょうか。まぁ、FessもN2 Searchとして商用提供はしているので。