通过数据写入API,您可以向指定应用和数据流中写入数据。本文介绍如何使用Elasticsearch Serverless服务的数据写入功能。

方法

POST

请求头

-H "X-Api-Key:<token>"
说明 <token>为已启用的token,获取方式请参见管理Token

URI

/{appName}/{dataStreamName}/{protocol}/{dataType}/push

请求参数

参数类型是否必选描述
appNameString应用名称。需要满足以下条件:
  • 在阿里云同一地域内同用户下唯一。
  • 长度为3~32个字符。必须以小写字母或数字开头和结尾,仅支持小写字母、数字、短划线(-)和下划线(_),且不能出现连续特殊字符。
dataStreamNameString数据流名称。
  • 在阿里云同一地域内同应用下唯一。
  • 长度为3~64个字符。必须以小写字母或数字开头和结尾,仅支持小写字母、数字、短划线(-)和下划线(_),且不能出现连续特殊字符。
protocolEnum请求体的数据格式,可选值:
  • elasticsearch:Elasticsearch数据格式。
  • prometheus:Prometheus数据格式。
dataTypeEnum数据类型,可选值:
  • metrics:全观测指标数据。
  • logs:日志数据。
说明 目前仅支持protocolprometheus+dataTypemetricsprotocolelasticsearch+dataTypelogs这两种组合方式。

返回参数

参数类型描述
requestIdString当前的Request ID。
resultBoolean是否写入成功:
  • true:写入成功。
  • false:写入失败。

RAM定义

  • Action:es-serverless:PushData
  • Resource:apps/{appName}

请求示例

  • Metric数据请求示例
    • 请求URI示例
      POST /foo/bar/prometheus/metrics/push
    • 请求Body示例
      参考prometheus协议。
      说明 请求体类型需要设置为Content-Type : application/x-protobuf。
  • 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_timeepoch_millis,详细信息请参见Built In FormatsData field type
      • 请求体类型需要设置为Content-Type : application/x-ndjson,可参考Elasticsearch官方docs-bulk
      • 每个发往日志数据流的请求可以搭载多条日志数据,需遵循NDJSON数据协议。
      • 建议使用长连接通过多条推送链路推送数据。
      • 如果遇到连接超时的错误,请重试。

返回示例

  • 正常返回示例
    {
        "requestId":"16B78383-2803-4964-9605-37B30C073B0E",
        "result":true
    }
  • 异常返回示例
    {
      "code":"InternalServerError",
       "message":"An internal server error occurred.",
       "requestId":"829F38F6-E2D6-4109-90A6-888160BD16C2"
    }