Elasticsearch は RESTful API をサポートしているので、HTTP API を使用してエイリアスの追加、削除、変更、検索、設定などの操作が可能です。 このトピックでは、ビジネス運用に RESTful API を使用する方法について説明します。

詳細については、『Elasticsearch 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 を開く必要があります。

Java クライアントとノードは、相互に認識できるよう、同じ Elasticsearch バージョンを使用する必要があります。

RESTful API (HTTP)

他の言語は RESTful API を使用して、ポート 9200 経由で Elasticsearch と通信できます。 任意の Web クライアントや curl コマンドを使用して、Elasticsearch と通信できます。

Elasticsearch は、GroovyJavascript.NETPHPPerlPythonRuby などの言語向けの公式クライアントを提供しています。

コミュニティで提供されるクライアントとプラグインの詳細については、『コミュニティで提供されるクライアント』をご参照ください。

HTTP を介した curl リクエストの構造

curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>? <QUERY_STRING>' -d '<BODY>'

  • VERB:HTTP メソッド (GETPOSTPUTHEADDELETE)。
  • PROTOCOLhttp または 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 形式のリクエスト本文。 このフィールドは、本文を必要とするリクエストの場合にのみ必要です。

Elasticsearch クラスター内のドキュメント数のカウント
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": {} 
    }
}