PHPのElasticsearch用ライブラリElasticaなかなか使い易い

xcode-auto-image-update-2-150x150

PHPでElasticsSearchを扱うライブラリ

本当はサクッとrubyで実装したかったけど、ElasticSearchと連携させたいサービスがPHPだったので、探してみた所、良さげなライブラリ発見! ドキュメントがあまりないので、基本ソース追いながらになるけど、けっこう使い易いので紹介。

ググってもほとんど引っ掛からないけど、あまり使われていないのかな。

インストール

おなじみcomposerで簡単にインストールできます。

下記のコマンド実行してElasticaインストール終了〜。

Elatica 使用方法 (サンプルコード)

いくつかコード例を記述。

サンプルコード1) Logstashのデータを取得したい

Logstashの取得する場合のシンプルなコード。簡単に叩くことができます。バックスラッシュの記述がどうも慣れないですが・・。

サンプルコード2) フィルタを入れて検索したい

必要なフィルタを追加したBoolAndクラスをQueryクラスにaddするという流れ。

サンプルコード3) ファセットを追加したい。

ファセットも簡単に追加できます。追加ファセットクラスを生成してaddFacetするだけです。

サンプルコード4) ファセットにフィルターを追加したい。

サンプルコード2と3の組み合わせ。Elasticaを使えばけっこう直感的に書けてしまいます。

レスポンスフォーマット

レスポンスのフォーマット例です。リクエストによって多少中身は変わると思いますが、参考までに。

尚、_sourceの部分にデータが入ってきますが省略してます。

その他、Elasticaの設定

クエリタイム取得

デバックモードをオンにするとレスポンスにクエリタイムを追加してくれます。

ログ出力

Elasticaのログを出力用には、Elastica::Logクラスが用意されています。

CakePHPのスクリプトで記述したい場合

CakePHPでElastia。まんまです。

エラー対応

リクエストエラー

これ別にElastica関係なく、ネットワーク環境に依存したエラーですが・・一応。

最初、なぜかElastiaでElasticsearchを叩けないと思ったらプロキシに捕まっていて、プロキシ無効にしたら無事叩けましたというお話です・・。

環境変数http_proxyを無効にしたら無事叩けました。

Elastica関連サイト