SenseによるElasticsearchへの楽々API発行

2016.01.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

藤本です。

気づけば一月も終わりかけていますが、、、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の画面へ遷移します。

Settings_-_Kibana

初回アクセス時は簡単な紹介が表示されます。

Sense_-_Kibana

画面構成

画面構成の主要ファクターは左右の2ペインです。 左ペインはAPI入力、右ペインはAPI実行結果です。 APIはHTTPメソッドで始め、APIのパスを指定します。 リクエストボディがあれば、改行し、以降の行に記述します。

Sense_-_Kibana

機能

API実行

当たり前なところですが、APIを実行できます。左ペインにAPIを記述し、再生ボタンをクリック(もしくはcommand + enterのショートカットキー)すればAPIを実行し、右ペインに実行結果が表示されます。

複数行選択し、実行すれば、上から順に実行されます。

Sense_-_Kibana

異なるサーバにAPIを実行したい場合、Serverにドメイン(IPアドレス)で指定してください。ちなみにAPIはローカルからの発行ではなく、Kibanaが動作しているホストから発行されます。

Sense_-_Kibana

サジェスト

なんといっても嬉しいのがサジェストです。私自身、数多くあるElasticsearchのAPIをうろ覚えなことが多々あり、cURLコマンドでAPI実行していた時はドキュメントとTerminalの往復やタイポでエラー返ってきたりで軽いストレスでしたが、それが不要になりました。サジェストは広い範囲をカバーしており、不要な情報を表示しないため非常に使いやすいです。control + spaceのショートカットキーでサジェストが表示されます。

サジェストの対応範囲は以下の様なところです。

  • method
  • endpoint
  • API
  • index
  • type

「GET 」と入力し、control + spaceを叩くと、endpointの候補が表示されました。

Sense_-_Kibana

更に入力を進めると、候補が絞られました。

Sense_-_Kibana

これでうろ覚えでも大丈夫!(ちが

サジェストはElasticsearchのどのバージョンを基準にしているのだろうか。。

AutoComplete

サジェストと連動して、自動補完も動作します。サジェストからAPIを選択するとよく使われるAPIのフィールドが自動で生成されます。

例えば、APIにsimple_query_stringを指定すると、

Sense_-_Kibana

自動でqueryとfieldsの指定が生成されました。

Sense_-_Kibana

インデント調整

リクエストボディのJSONを括弧後の改行やスペース2つのインデントでいい感じに整形してくれます。API ActionのスパナアイコンからAuto indentを選択します。

Sense_-_Kibana

Sense_-_Kibana

cURLコマンド取得

Sense上で生成したAPIを、cURLコマンドで実行する場合のコマンドを取得できます。API ActionのスパナアイコンからCopy As cURLを選択します。

Sense_-_Kibana

curl -XGET "http://localhost:9200/_search" -d'
{
"query": {
"simple_query_string": {
"query": "test",
"fields": ["memo"]
}
}
}'

API履歴

右上の時計アイコンからAPIの実行履歴を取得することができます。左のリストから選択し、Applyボタンをクリックすると、左ペインにAPIが復元します。

Sense_-_Kibana

ターミナルの履歴から探さなくてよいのは嬉しいですね。

キーボードショートカット

API実行、サジェスト表示、AutoIndentなど主要機能はショートカットキーに対応しています。

Sense_-_Kibana

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が返ってきます。

Sense_-_Kibana

まとめ

いかがでしたでしょうか? 今までcURLコマンドでAPIを実行していた方は早速試してみてください。

ちなみにSenseにもドキュメントがあります。(※参考URL参照) こういうツールにもドキュメントが作成されているところでElastic社のドキュメント作成への力の入れ方はとても尊敬します。

参考URL