そういうことだったんですね

いろいろ調べたり学んだりしたことを忘れないように書き連ねています

Rails - Tire と 全文検索エンジン Elasticsearch (1)

Elasticsearch は、Apache Lucene ベースの検索エンジンです。 fourcesquare や github 内部で使われています。 Tire という Rails プラグインのクライアントが出ています。

今回は、はじめに elasticsearch に調べて動かしてみます。

Apache Lucene(ルシーン)

Apache Lucene は、Elasticsearch のベースとなっている検索エンジン。 Javaで実装されています

  • Lucene Core - クラスライブラリ
  • Solr - 検索エンジンサーバ

前回取り上げた、sunspot は検索エンジン Solr を使ったRailsクライアントです。

Elasticsearch の特徴

http://www.elasticsearch.org/ に説明のある特徴は次の通り。

  • リアルタイムのデータと分析が可能である
  • 分散型である
  • RESTful なAPIである
  • インタフェースは JSON でありクエリが発行しやすい
  • 信頼性が高い
  • 別のグループのインデックスをもてる
  • 高性能なバージョン管理システムにより競合を防止できる
  • トランザクションによる整合性を保持
  • Apache 2 オープンライセンス

習うより慣れろ

といろいろありますが、まず、イメージを掴みやすくするために動かしてみます。

ダウンロード

http://www.elasticsearch.org/ からダウンロードします。 更新日現在のバージョンは 0.9.0 です。

zip, tar.gz, dep, rpm があるので適当なものを選んでください。 今回の開発環境は Mac OS X なので、zip を選びました。

展開する

OSの機能を使って展開します。MacOSの場合はダブルクリックします。 ダウンロード後は、とりあえず Application フォルダにコピーしました。

なお、Java Runtime が必要です。 Mac OS の場合はサーバを起動するタイミングでインストールダイアログが出ます。 それ以外のOSは別途インストールが必要です。

起動する

$ cd 
$ bin/elasticsearch -f

ずらずらっとログが表示されますが、

[INFO][node] [X-Man] started

が表示されたら起動成功してます。

フォアグラウンドで動かしてますので、プロンプトは戻ってきません。

アクセスする

$ curl -X GET http://localhost:9200

成功すればJSON形式のリプライが戻ってきます。

{
  "ok" : true,
  "status" : 200,
  "name" : "X-Man",
  "version" : {
    "number" : "0.90.3",
    "build_hash" : "5c38d6076448b899d758f29443329571e2522410",
    "build_timestamp" : "2013-08-06T13:18:31Z",
    "build_snapshot" : false,
    "lucene_version" : "4.4"
  },
  "tagline" : "You Know, for Search"
}

どうやら動いているようですね。

次回以降は Elasticserver の詳細と Tire について調べてみます。