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

Run Elasticsearch: Search Command
Search Result

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 ユーザー限定のツールなので、もしかしたらあまり需要がなかったりするかもしれませんが、興味がありましたら一度使ってみてください。ついでにフィードバックもお願いします!