Elasticsearch は RESTful API をサポートしているので、HTTP API を使用してエイリアスの追加、削除、変更、検索、設定などの操作が可能です。 このトピックでは、ビジネス運用に RESTful API を使用する方法について説明します。
Elasticsearch reference [5.5]
Single document APIs
Multi-document APIs
Java REST クライアントを使用したクラスターアクセス
HTTP と TCP を介したアクセスのみがサポートされています。 Java REST クライアントを使用することを推奨します。
Java API を使用したクラスターアクセス
Elasticsearch は、Java ユーザー向けのクラスターアクセスを提供しています。 Java API の詳細については、『Java API』をご参照ください。
トランスポートクライアント
トランスポートクライアントは、クラスター内のノードにリクエストを送信します。 ただし、トランスポートクライアントはクラスターの一部ではありません。
トランスポートクライアントは、Elasticsearch Transport Protocol を使用して、ポート 9300 でクラスターと通信します。
また、クラスター内のノードも、ポート 9300 を使用して相互に通信します。 ノードをクラスターにグループ化する前に、ノードのポート 9300 を開く必要があります。
RESTful API (HTTP)
他の言語は RESTful API を使用して、ポート 9200 経由で Elasticsearch と通信できます。 任意の Web クライアントや curl コマンドを使用して、Elasticsearch と通信できます。
Elasticsearch は、Groovy
、Javascript
、.NET
、PHP
、Perl
、Python
、Ruby
などの言語向けの公式クライアントを提供しています。
コミュニティで提供されるクライアントとプラグインの詳細については、『コミュニティで提供されるクライアント』をご参照ください。
HTTP を介した curl リクエストの構造
curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>? <QUERY_STRING>' -d '<BODY>'
VERB
:HTTP メソッド (GET
、POST
、PUT
、HEAD
、DELETE
)。PROTOCOL
:http
またはhttps
。 Elasticsearch で HTTPS が有効になっている場合のみ、https
を使用します。HOST
:Elasticsearch クラスター内のノードのホスト名。 ローカルノードを使用する場合、このフィールドをlocalhost
に設定します。PORT
:Elasticsearch HTTP サービスを実行するポート。 デフォルトのポート番号は、9200
です。PATH
:API エンドポイント。 たとえば、_count
はクラスター内のドキュメント数を返します。PATH
には、_cluster/stats
や_nodes/stats/jvm
など、複数の要素が含まれます。QUERY_STRING
:クエリパラメーター (オプション)。 たとえば、?pretty
パラメーターを指定すると、リクエストによって返される JSON 形式のデータが読みやすくなります。BODY
:JSON 形式のリクエスト本文。 このフィールドは、本文を必要とするリクエストの場合にのみ必要です。
例
curl -XGET 'http://localhost:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
}
}'
{
"count" : 0,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
}
}
curl -i
コマンドを使用して HTTP ヘッダーを取得することができます (curl -i -XGET 'localhost:9200/'
など)。
curl -XGET 'localhost:9200/_count? pretty' -d '
{
"query": {
"match_all": {}
}
}'
GET /_count
{
"query": {
"match_all": {}
}
}