通过数据写入API,您可以向指定应用和数据流中写入数据。本文介绍如何使用Elasticsearch Serverless服务的数据写入功能。
方法
POST
请求头
-H "X-Api-Key:<token>"
说明
<token>
为已启用的token,获取方式请参见管理Token。URI
/{appName}/{dataStreamName}/{protocol}/{dataType}/push
请求参数
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
appName | String | 是 | 应用名称。需要满足以下条件:
|
dataStreamName | String | 是 | 数据流名称。
|
protocol | Enum | 是 | 请求体的数据格式,可选值:
|
dataType | Enum | 是 | 数据类型,可选值:
|
说明 目前仅支持protocol为prometheus+dataType为metrics和protocol为elasticsearch+dataType为logs这两种组合方式。
返回参数
参数 | 类型 | 描述 |
---|---|---|
requestId | String | 当前的Request ID。 |
result | Boolean | 是否写入成功:
|
RAM定义
- Action:
es-serverless:PushData
- Resource:
apps/{appName}
请求示例
- Metric数据请求示例
- 请求URI示例
POST /foo/bar/prometheus/metrics/push
- 请求Body示例参考prometheus协议。说明 请求体类型需要设置为Content-Type : application/x-protobuf。
- 请求URI示例
- Log数据请求示例
- 请求URI示例
POST /foo/bar/elasticsearch/logs/push
- 请求Body示例
{"create":{}} {"field1":"value1"} {"create":{}} {"field1":"value2"} {"create":{}} {"timestamp": "2020-10-31T10:26:10.488Z"}
说明- 请求Body中兼容不带
{"create":{}}
命令行的写入。目前暂不支持除create外的其他action,且不支持设置create属性。 - 时间字段默认为UTC时间。仅支持Elasticsearch默认格式,即
strict_date_optional_time
和epoch_millis
,详细信息请参见Built In Formats和Data field type。 - 请求体类型需要设置为
Content-Type : application/x-ndjson
,可参考Elasticsearch官方docs-bulk。 - 每个发往日志数据流的请求可以搭载多条日志数据,需遵循NDJSON数据协议。
- 建议使用长连接通过多条推送链路推送数据。
- 如果遇到连接超时的错误,请重试。
- 请求Body中兼容不带
- 请求URI示例
返回示例
- 正常返回示例
{ "requestId":"16B78383-2803-4964-9605-37B30C073B0E", "result":true }
- 异常返回示例
{ "code":"InternalServerError", "message":"An internal server error occurred.", "requestId":"829F38F6-E2D6-4109-90A6-888160BD16C2" }