Elasticsearch API 一覧
Elasticsearch APIs — Elasticsearch が提供するAPI一覧
APIの一覧をまとめた資料が見当たらなかったので、APIでできることを把握できるようにAPIの一覧をまとめてみました。
NOTE: バージョン1.x の本家リファレンスを参考にしています。
Elasticsearch の提供している各種APIは、以下の図のように検索やドキュメントの登録だけではなく、各種設定、モニタリング、メンテナンスの為のAPIまで幅広く提供されています。
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”