Elasticsearch API 一覧

Elasticsearch APIs — Elasticsearch が提供するAPI一覧

Kunihiko Kido
Hello! Elasticsearch.

--

APIの一覧をまとめた資料が見当たらなかったので、APIでできることを把握できるようにAPIの一覧をまとめてみました。

NOTE: バージョン1.x の本家リファレンスを参考にしています。

Elasticsearch の提供している各種APIは、以下の図のように検索やドキュメントの登録だけではなく、各種設定、モニタリング、メンテナンスの為のAPIまで幅広く提供されています。

Elasticsearch API Over View

document apis

ドキュメントの追加・更新などのドキュメント操作の為のAPI

【document api】
PUT /{index}/{type}/{id} # ドキュメントの追加更新
POST /{index}/{type} # ドキュメントの追加更新(ID自動生成)
GET /{index}/{type}/{id} # ドキュメントの取得
GET /{index}/{type}/{id}/_source # _source の内容のみ取得
HEAD /{index}/{type}/{id} # ドキュメントの存在確認
DELETE /{index}/{type}/{id} # ドキュメントの削除
POST /{index}/{type}/{id}/_update # ドキュメントの部分更新
GET /_mget # 複数ドキュメントの取得
GET /{index}/_mget # 同上
GET /{index}/{type}/_mget # 同上
POST /_bluk # 複数ドキュメントの追加更新削除
POST /{index}/_bluk # 同上
POST /{index}/{type}/_bluk # 同上
GET /{index}/{type}/{id}/_termvector # ドキュメントの単語統計情報取得
GET /_termvectors # 複数ドキュメントの単語統計情報取得
GET /{index}/_termvecrots # 同上
GET /{index}/{type}/_termvectors # 同上

search apis

インデックス済みドキュメントの検索API

【search api】
GET|POST /{index}/{type}/_search # ドキュメントの検索
{index} ... blank | * | _all | glob pattern | name1, name2, …
{type} ... blank | name1, name2, …

Index management

インデックスの作成などインデックス操作の為のAPI

【index api】
PUT /{index} # インデックスの作成
DELETE /{index} # インデックスの削除
HEAD /{index} # インデックスの存在確認
POST /{index}/_close # インデックスの読み書きブロック
POST /{index}/_open # インデックスの読み書きブロック解除
{index} ... * | _all | glob pattern | name1, name2, …

mapping management

マッピングの定義などマッピング管理の為のAPI

【mapping api】
PUT /{index}/_mapping/{type} # マッピング定義
PUT /{index}/{type}/_mapping # 下位互換?
GET /{index}/_mapping/{type} # マッピング定義の取得
GET /{index}/{type}/_mapping # 下位互換?
GET /{index}/_mapping/{type}/field/{field} # フィールドマッピング定義取得
GET /{index}/{type}/_mapping/field/{field} # 下位互換?
DELETE /{index}/{type} # タイプの削除(マッピングの削除)
DELETE /{index}/_mapping/{type} # マッピング定義の削除(タイプの削除)
DELETE /{index}/{type}/_mapping # 下位互換?
HEAD /{index}/{type} # タイプの存在確認
{index} ... blank | * | _all | glob pattern | name1, name2, …
{type} ... blank | * | _all | glob pattern | name1, name2, …
{field} ... * | glob pattern | name1, name2, …

alias management

インデックスエイリアスの追加などエイリアス管理の為のAPI

【index aliases api】
POST /_aliases # エイリアスの追加・削除
PUT /{index}/_alias/{name} # 個々のエイリアスの追加
DELETE /{index}/_alias/{name} # 個々のエイリアスの削除
GET /{index}/_alias/{name} # エイリアス情報の取得
HEAD /{index}/_alias/{name} # エイリアスの存在確認
{index} ... blank | * | _all | glob pattern | name1, name2, …
{name} ... blank | * | _all | glob pattern | name1, name2, …
※ エイリアスの定義は、インデックスの作成時に含めることも可能です。

index settings

インデックスの設定情報更新などインデックス設定管理の為のAPI

【indices settings api】
PUT /{index}/_settings # インデックスの設定更新
GET /{index}/_settings # インデックスの設定情報取得
{index} ... blank | * | _all | glob pattern | name1, name2, …【analyze api】
GET /{index}/_analyze # アナライザーのテスト
{index} ... blank | name【index templates api】
PUT /_template/{name} # インデックステンプレートの設定
DELETE /_template/{name} # インデックステンプレートの削除
GET /_template/{name} # インデックステンプレートの取得
{name} ... blank | * | _all | glob pattern | name1, name2, …【warmer api】
PUT /{index}/{type}/_warmer/{name} # ウォームアップ検索リクエストの設定
DELETE /{index}/{type}/_warmer/{name} # ウォームアップ検索リクエストの削除
GET /{index}/_warmer/{name} # ウォームアップ検索リクエストの取得
{index} ... blank | * | _all | glob pattern | name1, name2, …
{name} ... blank | * | _all | glob pattern | name1, name2, …
※ _warmer のかわりに、_warmers を使用することもできます。
※ ウォームアップ検索リクエストは、インデックス作成、テンプレート設定に含めることも可能です。

monitoring

インデックスのステータス情報などのモニタリングの為のAPI

GET    /{index}/_status        # インデックスのステータス情報取得
GET /{index}/_stats # インデックスの統計情報取得
GET /{index}/_segments # インデックスシャード情報取得
GET /{index}/_recovery # インデックスのリカバリー状況取得
{index} ... blank | * | _all | glob pattern | name1, name2, …

status management

インデックスのキャッシュ情報クリアなど状態管理の為のAPI

【status api】
POST /{index}/_cache/clear # インデックスのキャッシュ情報をクリア
POST /{index}/_refresh # インデックスの明示的なリフレッシュ
POST /{index}/_flush # トランザクションログをクリアしてメモリを解放
POST /{index}/_optimize # 高速な検索の為の最適化。
{index} ... blank | * | _all | glob pattern | name1, name2, …※ _refresh、_flush は、デフォルトで自動実行される

cat apis

人が見やすいテキスト形式を出力するためのAPI

GET    /_cat/aliases            # インデックスエイリアス情報取得
GET /_cat/allocation # シャードのディスク使用状況取得
GET /_cat/count/{index} # インデックスのドキュメント数取得
GET /_cat/health # クラスター情報取得
GET /_cat/indices/{index} # インデックス毎のドキュメント数など取得
GET /_cat/master # マスターノード情報取得
GET /_cat/nodes # クラスター構成情報取得
GET /_cat/pending_tasks # クラスターのペンディングタスク情報取得
GET /_cat/recovery # シャードのレプリケーション情報取得
GET /_cat/thread_pool # ノード毎のスレッドプールの統計情報取得
GET /_cat/shards # シャードの配置ノード情報取得
GET /_cat/plugins # ノード毎のプラグインの稼働状況取得

Tips: 出力の表示方法を見やすく制御するパラメータをつけるとさらに見やすく表示することができます。詳しくは common parameters を参照してください。

cluster apis

クラスターの状態など統計情報の取得や設定変更するためのAPI

【cluster api】
GET /_cluster/health/{index} # クラスターの健康状態の取得
GET /_cluster/state/{metrics}/{index} # クラスターの総合的な状態を取得
GET /_cluster/stats # クラスターの統計情報を取得
GET /_cluster/pending_tasks # クラスターの保留中タスクの取得
POST /_cluster/reroute # シャードの配置移動や割当
PUT /_cluster/settings # クラスター設定の更新
GET /_cluster/settings # クラスター設定の取得
GET /_nodes/{nodeIds}/stats/{stats} # ノードレベルの統計情報取得
GET /_nodes/{nodeIds}/{info} # クラスターのノード情報取得
GET /_nodes/{nodeIds}/hot_threads # 稼働率の高いスレッド情報取得
POST /_cluster/nodes/{nodeIds}/_shutdown # 指定したノードの停止
{index} ... blank | * | _all | glob pattern | name1, name2, …
{nodeIds} ... blank | _all | _local | ip addresses | names | attributes
{info} ... blank | settings | os | process | jvm | thread_pool | network | transport | http | plugins
{stats} ... blank | indices | fs | http | jvm | network | os | process | thread_pool | transport | breaker

Tips: {nodeIds} のノードの詳しい指定方法は、node specification を参照

river apis

Elasticsearch にデーターをフィードするRiverプラグインを管理するたのめAPI

PUT    /_river/{name}/_meta        # Riverの作成
DELETE /_river/{name} # Riverの削除・停止
GET /_river/{name}/_status # Riverのステータス確認
※ 作成したRiverを停止するには削除します。またこのときインデックスは削除されません。

以上が Elasticsearch で提供している 各種APIです。間違え・過不足がありましたらご指摘いただけると助かります。

おまけ

Pretty printed
JSON の結果出力を見やすくするには、pretty パラメータを指定します。

?pretty=true

YAML フォーマット
YAML の出力形式がこのみなら、format パラメータに yaml を指定します。

?format=yaml

JSONP サポート
cat api 以外の API は JSONP もサポートしているようです。callback パラメータを付与するとJSONP形式で結果が取得できます。

?callback=my_callback_name

データをファイルから読み込む (cURL)
cURL コマンドに渡す情報をファイルから読み込むこともできます。

$ vi tweet1.js
{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}

保存したファイルの内容を使ってドキュメントをインデックス

$ curl -XPUT 'localhost:9200/twitter/tweet/1' -d @tweet1.js

jq command-line JSON processor
シェルとかコマンドラインで、JSONの結果の値を使ってごにょごにょしたいなら、jq command-line JSON processor が便利。

$ brew install jq                     # OS X

クラスターの “status” の値のみを取得してみる。

$ curl -s ‘localhost:9200/_cluster/health’ | jq ‘.status’
“yeallow”

--

--