Curl ElasticSearch コマンド チートシート

Curl ElasticSearch コマンド チートシート

  • オーケストレーション
5分で読めます 更新日 Sep 30, 2024

ポイント: 一般的な ElasticSearch curl コマンドは、インデックス作成、クエリ、ドキュメントの更新などのデータ管理タスクを簡素化します。これらのコマンドにより、ユーザーは ElasticSearch RESTful API と効率的に対話できます。

  • ElasticSearch は動的フィールドマッピングをサポートし、柔軟なデータ探索を可能にします。
  • コマンドには、インデックスの作成、削除、リスト、および URL パラメータまたは JSON を使用したドキュメントのクエリが含まれます。

ここでは、最も一般的な ElasticSearch curl コマンドのいくつかを示します。ElasticSearch は時に複雑です。そこで、ここではそれを簡単にします。

背景情報

「curl」とは何ですか?

cURL の略語、現在は curl と頻繁に書かれるのはクライアント URL の意味です。これは、データをウェブサーバー、API、および他のネットワークデバイスに転送するためのコマンドラインツールです。開発者は、これがウェブ開発プロジェクト、オートメーションおよびスクリプトタスク、および IT システム管理において必要不可欠なツールだと感じています。

ElasticSearch curl コマンドの使用

大規模なデータのインデックス作成とクエリには、curl ElasticSearch は強力な分散検索および分析エンジンです。curl を使用して ElasticSearch RESTful API に直接アクセスし、インデックスを作成したり、ドキュメントを検索したり、データを更新したり、クラスターコンピューティングを管理したりできます。ここに curl ElasticSearch コマンドのチートシートがあります:

ElasticSearch curl の例

curl を使用した ElasticSearch インデックス コマンド

ElasticSearch インデックスとは、一連のサインであり、一連のドキュメントを識別し参照するものです。これらはフィールドのコレクションであり、すべてデータを保持しています。固定スキーマとは異なり、ElasticSearch が弾力的である理由は、事前に物事をマッピングする必要がないからです。これにより、フィールドを定義することなくデータを探索できます。フィールドを動的に自動検出およびマッピングします。

ElasticSearch でインデックスを作成

以下の ElasticSearch コマンドは、デフォルト設定で index_name という名前のインデックスを作成します。

    curl -X PUT 'http://localhost:9200/index_name'

ElasticSearch インデックスを削除

ElasticSearch インデックスを削除するには(この場合、samples という名前の)、以下の curl コマンドを使用します:

    curl -X DELETE 'http://localhost:9200/samples'

すべてのインデックスをリスト

ElasticSearch のすべてのインデックスをリストするには、次のようにします:

    curl -X GET 'http://localhost:9200/_cat/indices?v'

インデックス内のすべてのドキュメントをリスト

以下は、インデックスからすべてのドキュメントを返すための curl ElasticSearch クエリです:

    curl -X GET 'http://localhost:9200/sample/_search'

インデックス マッピングをリスト

すべての ElasticSearch フィールドはインデックスです。したがって、この ElasticSearch curl コマンドは、インデックス内のすべてのフィールドとその型をリストします。

    curl -X GET http://localhost:9200/samples

ElasticSearch インデックスをバックアップ

    curl -XPOST --header 'Content-Type: application/json' http://localhost:9200/_reindex -d '{
"source": {
"index": "samples"
},
"dest": {
"index": "samples_backup"
}
}'

curl を使用して ElasticSearch をクエリする方法

curl を使用して ElasticSearch をクエリする場合、URL パラメータを使用するか、クエリを含む JSON 本文で HTTP GET リクエストを送信できます。ここでは、両方のアプローチの例を示します:

URL パラメータを使用した ElasticSearch curl クエリ

以下は、基本的なクエリや操作に便利な ElasticSearch curl コマンドの簡単な例です。ここでは、Lucene クエリ形式を使用して q=school:Harvard と書きます。

    curl -X GET http://localhost:9200/samples/_search?q=school:Harvard

JSON を使用したクエリ(ElasticSearch Query DSL)

URL でパラメータを使用してクエリすることもできます。しかし、次の例のように、JSON を使用して curl を使用して ElasticSearch をクエリすることもできます。複雑なクエリを持つ場合、URL パラメータの巨大な文字列よりも、JSON の方が読みやすく、デバッグしやすいです。

    curl -XGET --header 'Content-Type: application/json' http://localhost:9200/samples/_search -d '{
"query" : {
"match" : { "school": "Harvard" }
}
}'

特定のフィールドのみを返す ElasticSearch クエリ

curl を使用して ElasticSearch をクエリする際に特定のフィールドのみを返すには、それらを _source 配列に入れます:

    GET filebeat-7.6.2-2020.05.05-000001/_search
{
"_source": ["suricata.eve.timestamp","source.geo.region_name","event.created"],
"query": {
"match" : { "source.geo.country_iso_code": "GR" }
}
}

日付による ElasticSearch クエリ

フィールドの型が「date」の場合、次のように日付数学を使用できます:

    GET filebeat-7.6.2-2020.05.05-000001/_search
{
"query": {
"range" : {
"event.created": {
"gte" : "now-7d/d"
}
}
}
}

curl を使用した ElasticSearch コマンド

データを追加

以下の curl コマンドは、ElasticSearch ドキュメントにデータを追加します:

    curl -XPUT --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/1 -d '{
"school" : "Harvard" 
}'

ドキュメントを更新

既存の ElasticSearch ドキュメントにフィールドを追加する方法は次のとおりです。まず、新しいドキュメントを作成し、その後更新します。

    curl -XPUT --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/2 -d '
{
"school": "Clemson"
}'
curl -XPOST --header 'Content-Type: application/json' http://localhost:9200/samples/_doc/2/_update -d '{
"doc" : {
"students": 50000}
}'

他の便利な ElasticSearch curl コマンドの例

JSON 形式でデータをバルクロード

ここでは、ElasticSearch クラスターに JSON 形式でデータをバルクロードする方法を示します:

    export pwd="elastic:"
curl --user $pwd -H 'Content-Type: application/x-ndjson' -XPOST 'https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/0/_bulk?pretty' --data-binary @

ElasticSearch クラスターのヘルスを表示

以下の curl xget ElasticSearch コマンドは、JSON 形式を使用して ElasticSearch クラスターのヘルスをチェックします:

    curl --user $pwd -H 'Content-Type: application/json' -XGET https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/_cluster/health?pretty

集約およびバケット集約

nginx ウェブサーバーの場合、この ElasticSearch 集約コマンドはユーザーの都市によるウェブヒット数を生成します:

    curl -XGET --user $pwd --header 'Content-Type: application/json' https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/logstash/_search?pretty -d '{
"aggs": {
"cityName": {
"terms": {
"field": "geoip.city_name.keyword",
"size": 50
}
}
}
}
'

これは、nginx ウェブサーバーログ内の都市ごとの製品応答コード数に拡張されます:

    curl -XGET --user $pwd --header 'Content-Type: application/json' https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/logstash/_search?pretty -d '{
"aggs": {
"city": {
"terms": {
"field": "geoip.city_name.keyword"
},
"aggs": {
"responses": {
"terms": {
"field": "response"
}
}
}
},
"responses": {
"terms": {
"field": "response"
}
}
}
}'

基本認証を使用した ElasticSearch

ElasticSearch でセキュリティをオンにしている場合、以下のようにすべての curl コマンドにユーザー名とパスワードを提供する必要があります:

    curl -X GET 'http://localhost:9200/_cat/indices?v' -u elastic:(password)

Pretty print ElasticSearch

検索のすべてに ?pretty=true を追加して、JSON をきれいに印刷します。このように:

    curl -X GET 'http://localhost:9200/(index)/_search'?pretty=true

これらの投稿は私自身のものであり、必ずしも BMC の立場、戦略、または意見を代表するものではありません。

オーケストレーションの関連記事

BMCからのさらなる情報に興味がありますか?

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーションに関する月刊メールです:研究、顧客ストーリー、製品ニュース、イベント。

このオファーに登録することで、あなたはBMCのプライバシーポリシーを読み、同意したことを確認します。

ザ・ブリーフに登録しました

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーション—BMC AMIおよびControl-M—に関するアナリストの研究、顧客の展開、両者にわたるイベントを網羅しています。