Elasticsearch Client for Sublime Text 3
Sublime Text から Elasticsearch の各種 API を快適に操作するためのプラグイン
クエリを組み立てて検証したり、以外とElasticsearchのAPIを直接コールする機会は結構多い気がします。。
ターミナルを開いてcurlコマンで実行!とか、ElasticHQとかウェブのインターフェースからクエリ組み立てて「検索してみる」とかでしょうか?みなさんどうやっているんだろうか?
実際の開発では、結構複雑なクエリになったりするので、テキストエディタの出番が多いし、それに、環境が複数あったり、そもそもElasticsearchのAPI多すぎて覚えられない。。。
いろいろ試行錯誤してきましたが、なかなかスタイルに合うものがなかったので、自分で作りましたw。以外と便利なので使い方紹介します。
Elasticsearch Client for Sublime Text 3
特徴
Sublime Text のプラグインとして動作するので、エディタを離れずに Elasticsearch の各種操作ができます。以下はその特徴です。
- Elasticsearch の API を覚えてなくても簡単にAPI叩けます。
- 書いたクエリをそのままAPIに送信、結果を確認できます。
- 複数環境あっても簡単に切り替えできます。
- Quey DSL のスニペット使って簡単にクエリ書けます。
- 書いたクエリの簡易なパフォーマンス計測ができます。
インストール
Package Control にも登録してあるので、誰でも簡単にインストールして使えます。
インストール手順は、Sublime Text を起動して、Sublime Text ユーザーお馴染みの、Cmd+Shift+P で Command Palette 開いて、Package Control: Install Package から、"ElasticsearchClient" を選択すればインストール完了です。
インストールが完了したら、もう一度 Command Palette を開いて、"elasticsearch" と入力してみてください。APIを操作するための各種コマンドの一覧が表示されるはずです。

こんな感じに表示されます。結構いろいろなAPIを網羅してます。
設定
まずは、接続先の設定をしましょう。
Sublime Text のメニューからPreferences > Package Settings > ElasticsearchClient > Settings - User を開いて、JSON形式で設定します。
Example:
{
"servers": {
"localhost":{
"base_url": "http://localhost:9200/",
"index": "test",
"doc_type": "test",
"enabled_index_document": true
},
"api.siba.tokyo": {
"base_url": "http://api.siba.tokyo/public/",
"index": "index-zgkksx-my-index",
"doc_type": "webpages"
}
}
}“servers” には、複数の設定ができます。
また、削除・書き込み系のAPIはデフォルトでは無効にしてあるので、環境に合わせて、有効にしてください。上記の設定例では、localhost の環境に対して、ドキュメントをインデックスする操作を許可してます。
その他細かな設定は、README を参考にしてください。
使い方
それでは、早速クエリを書いてみましょう。

クエリを書くとき、拡張子を *.es にするか、Syntax の設定を Elasticsearch に設定するとスニペットが使えるようになります。

また、PrettyJson プラグインがインストールされていれば、保存するときに自動でJSONを整形してくれます。
準備ができたら、ショートカットの Ctrl+Alt+S または、Command Palette (Cmd+Shift+P) を開いて、Elasticsearch: Search を選択すると、書いたクエリを送信できます。検索結果以下のようにパレットに表示されるはずです。※ Ctrl+Alt+S の「S」はもちろん Search の「S」ですw


1ファイル内の任意のクエリを実行する
基本的には、1ファイル1クエリですが、1つのファイルの中に複数のクエリを書いておいて、任意のクエリを実行することもできます。
その方法は、テキストエディタなので、実行したいクエリを選択して、先ほどの手順でコマンドを実行するだけです。

環境の切り替え方
複数の環境を切り替えて使いたい場合は、Command Palette (Cmd+Shift+P) を開いて、Elasticsearch: Switch Servers を選択すると、以下のようなパネルが表示されるので、切り替えたい環境を選択してください。

アクティブな環境を確認するには、Command Palette (Cmd+Shift+P) を開いて、Elasticsearch: Show Active Server を選択すると、表示されます。

Elasticsearchを操作するコマンド群
使い方の説明では、検索のコマンドを紹介しましたが、その他いろいろなAPIをカバーしています。もちろんドキュメントをインデックスしたり、削除することもできます。
Elasticsearch: Index Document コマンド
例えば、ドキュメントをインデックスするには以下の手順です。
1)登録したいドキュメントをJSON形式で書く

2)Command Palette からElasticsearch: Index Document を呼び出す

3)ドキュメントIDを入力して実行
※ドキュメントIDを空で実行すると自動で割り振られます。

4)実行結果を確認

簡単ですねw
その他コマンド一覧
- Elasticsearch: Analyze
- Elasticsearch: Benchmark
- Elasticsearch: Cat Aliases
- Elasticsearch: Cat Allocation
- Elasticsearch: Cat Health
- Elasticsearch: Cat Indexes
- Elasticsearch: Cat Master
- Elasticsearch: Cat Nodes
- Elasticsearch: Cat Pending Tasks
- Elasticsearch: Cat Plugins
- Elasticsearch: Cat Recovery
- Elasticsearch: Cat Segments
- Elasticsearch: Cat Shards
- Elasticsearch: Cat Thread Pool
- Elasticsearch: Create Index
- Elasticsearch: Delete Document
- Elasticsearch: Delete Index
- Elasticsearch: Delete Mapping
- Elasticsearch: Explain Document
- Elasticsearch: Get Document
- Elasticsearch: Get Index Settings
- Elasticsearch: Get Mapping
- Elasticsearch: Index Document
- Elasticsearch: Match Document (Percolator)
- Elasticsearch: Put Mapping
- Elasticsearch: Register Query (Percolator)
- Elasticsearch: Search
- Elasticsearch: Show Registered Query (Percolator)
- Elasticsearch: UN-Register Query (Percolator)
結構いろいろなAPIをカバーしてます。
クエリのパフォーマンス計測
Elasticsearch の Benchmark APIも呼び出すことができるのですが、もっと気軽に、書いたクエリを使って、そのままパフォーマンス計測できるように、Elasticsearch: Apache Bench と言うコマンドを用意しています。名前の通り、Apache Bench を使った計測が可能です。
使い方は、他のコマンドと同じ。Command Palette から呼び出すだけです。

まとめ
いかがでしたでしょうか?以外と便利そうですかね?
Sublime Text ユーザー限定のツールなので、もしかしたらあまり需要がなかったりするかもしれませんが、興味がありましたら一度使ってみてください。ついでにフィードバックもお願いします!