SenseによるElasticsearchへの楽々API発行
はじめに
藤本です。
気づけば一月も終わりかけていますが、、、2016年一本目です。今年もよろしくお願いします。 チープなタイトルですが、Sense便利です!Elasticsearchを使っていて、Sense使っていない方は是非使ってみてください!以上!
概要
ElasticsearchのSearch APIの検証やテストデータ投入やその準備などでAPIを実行する時、私はターミナルからcURLコマンドを使って実行していました。簡単なAPIであれば苦ではありませんが、リクエストボディのJSONが長くなったり、似たようなAPIを幾つか流したりする場合、cURLコマンドでは手間です。
そんなElasticsearchへのAPI実行を楽にしてくれる操作ツールのSenseをご紹介します。
Senseとは
SenseはElasticsearchを開発しているElastic社が提供するAPI発行するための便利機能が詰まったWEBツールです。 当初、SenseはMarvelの1コンポーネントとして利用可能な機能でした。それがSense 2.0からはKibanaのプラグインとして完全無償でリリースされました。
それでは実画面交えながら機能をご紹介します。
インストール
Kibana 4.2以降であれば、プラグインとしてインストールできます。コマンド一つでインストールできます。
# ./kibana-4.3.1-linux-x64/bin/kibana plugin --install elastic/sense Installing sense Attempting to extract from https://download.elastic.co/elastic/sense/sense-latest.tar.gz Downloading 318236 bytes.................... Extraction complete Optimizing and caching browser bundles... Plugin installation complete
Kibanaを再起動し、Kibanaへアクセスします。 画面上部のプラグインメニューを展開すると、Senseが追加されていますので、クリックするとSenseの画面へ遷移します。
初回アクセス時は簡単な紹介が表示されます。
画面構成
画面構成の主要ファクターは左右の2ペインです。 左ペインはAPI入力、右ペインはAPI実行結果です。 APIはHTTPメソッドで始め、APIのパスを指定します。 リクエストボディがあれば、改行し、以降の行に記述します。
機能
API実行
当たり前なところですが、APIを実行できます。左ペインにAPIを記述し、再生ボタンをクリック(もしくはcommand + enter
のショートカットキー)すればAPIを実行し、右ペインに実行結果が表示されます。
複数行選択し、実行すれば、上から順に実行されます。
異なるサーバにAPIを実行したい場合、Serverにドメイン(IPアドレス)で指定してください。ちなみにAPIはローカルからの発行ではなく、Kibanaが動作しているホストから発行されます。
サジェスト
なんといっても嬉しいのがサジェストです。私自身、数多くあるElasticsearchのAPIをうろ覚えなことが多々あり、cURLコマンドでAPI実行していた時はドキュメントとTerminalの往復やタイポでエラー返ってきたりで軽いストレスでしたが、それが不要になりました。サジェストは広い範囲をカバーしており、不要な情報を表示しないため非常に使いやすいです。control + space
のショートカットキーでサジェストが表示されます。
サジェストの対応範囲は以下の様なところです。
- method
- endpoint
- API
- index
- type
「GET 」と入力し、control + space
を叩くと、endpointの候補が表示されました。
更に入力を進めると、候補が絞られました。
これでうろ覚えでも大丈夫!(ちが
サジェストはElasticsearchのどのバージョンを基準にしているのだろうか。。
AutoComplete
サジェストと連動して、自動補完も動作します。サジェストからAPIを選択するとよく使われるAPIのフィールドが自動で生成されます。
例えば、APIにsimple_query_string
を指定すると、
自動でqueryとfieldsの指定が生成されました。
インデント調整
リクエストボディのJSONを括弧後の改行やスペース2つのインデントでいい感じに整形してくれます。API ActionのスパナアイコンからAuto indent
を選択します。
cURLコマンド取得
Sense上で生成したAPIを、cURLコマンドで実行する場合のコマンドを取得できます。API ActionのスパナアイコンからCopy As cURL
を選択します。
curl -XGET "http://localhost:9200/_search" -d' { "query": { "simple_query_string": { "query": "test", "fields": ["memo"] } } }'
API履歴
右上の時計アイコンからAPIの実行履歴を取得することができます。左のリストから選択し、Apply
ボタンをクリックすると、左ペインにAPIが復元します。
ターミナルの履歴から探さなくてよいのは嬉しいですね。
キーボードショートカット
API実行、サジェスト表示、AutoIndentなど主要機能はショートカットキーに対応しています。
API発行先制限
API実行の中でServer指定することで異なるElasticsearchホストにAPI実行が可能と記載しましたが、セキュリティ的に許容されない場合、Kibanaの設定ファイルにフィルターの設定を加えることでServerに指定可能なホストパターンを指定することができます。
例えば、自身のElasticsearch以外にAPIを発行させたくない場合、以下のような設定を加えます。
# vi kibana-4.3.1-linux-x64/config/kibana.yml --- 以下を追記 sense.proxyFilter: - ^https?://(localhost|127\.0\.0\.1|\[::0\]).*
Kibanaを再起動し、異なるホストを指定し、APIを実行するとErrorが返ってきます。
まとめ
いかがでしたでしょうか? 今までcURLコマンドでAPIを実行していた方は早速試してみてください。
ちなみにSenseにもドキュメントがあります。(※参考URL参照) こういうツールにもドキュメントが作成されているところでElastic社のドキュメント作成への力の入れ方はとても尊敬します。