aliyun-timestream では、InfluxDB ラインプロトコルを使用して、InfluxDB から Elasticsearch の時系列インデックスにデータを同期できます。このトピックでは、InfluxDB から Elasticsearch の時系列インデックスにデータを同期するために使用できる API について説明します。また、API の使用上の注意と使用例についても説明します。
前提条件
カーネルバージョン V1.8.0 以後の Elasticsearch V7.10 クラスタが作成されていること。詳細については、「Alibaba Cloud Elasticsearch クラスタの作成」をご参照ください。
リクエスト構文
POST /_time_stream/influx/write?db={index}&precision=ns
{infludb lines data}リクエストパラメータ
パラメータ | 説明 |
db | 必須。このパラメータは、データを書き込む時系列インデックスの名前を指定します。 |
precision | オプション。精度パラメータ。有効な値:n、ns、u、ms、s、m、h。このパラメータを設定しない場合、デフォルト値 ns が使用されます。 |
使用上の注意
次のコードは、InfluxDB ラインプロトコルの構文を示しています。ラインプロトコルの詳細については、InfluxDB のドキュメントのラインプロトコルを参照してください。
// Syntax
<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]
// Example
myMeasurement,tag1=value1,tag2=value2 fieldKey="fieldValue" 1556813561098000000InfluxDB ラインプロトコルを使用して InfluxDB から Elasticsearch の時系列インデックスに同期されたデータの場合、measurement の実際の名前は、labels パラメータの measurement(フィールド 1)という名前のフィールドによって表されます。 labels パラメータに含まれる既存のフィールド(フィールド 2)の名前も measurement である場合、フィールド 1 の値はフィールド 2 の値を上書きします。
次のコードは、InfluxDB のデータ形式と、データが Elasticsearch に書き込まれた後のデータ形式の例を示しています。
InfluxDB のデータ
testInflux,label1=label_value1 metric1=0.5Elasticsearch に書き込まれたデータ
{ "@timestamp": 1669972652000, "labels": { "measurement": "testInflux", "label1": "label_value1" }, "metrics": { "metric1": 0.5 } }オープンソース Elasticsearch の 検索 API または aliyun-timestream と統合された Prometheus API を使用して、InfluxDB ラインプロトコルを使用して InfluxDB から Elasticsearch に同期されたデータをクエリできます。
例
リクエスト例
curl -i --user "user:password" "http://xxx:9200/_time_stream/influx/write?db=test_stream" -d "testInflux,label1=label_value1 metric1=0.5"レスポンス例
HTTP/1.1 204 No Contentデータが Elasticsearch に正常に書き込まれた場合、レスポンスの本文は No Content として表示され、HTTP ステータスコード 204 が返されます。データが Elasticsearch に書き込めなかった場合、レスポンスは InfluxDB 書き込み API を使用してデータの書き込みに失敗した場合に返されるレスポンスと同じです。