全部产品
阿里云办公

数据处理类

更新时间:2018-05-29 15:29:13

上传文档

支持新增、更新、删除的批量操作

URL

/index/doc/$app_name (app_name为要操作的应用名称)

支持格式

JSON

HTTP请求方式

POST

请求参数

参数 类型 必需 取值范围 默认值 描述
action string push
table_name string 要上传数据的表名
items string 规定JSON格式,如下所示

items格式

  1. [
  2. {
  3. "cmd": "add",
  4. "timestamp": 1401342874777,
  5. "fields": {
  6. "id": "1",
  7. "title": "This is the title",
  8. "body": "This is the body"
  9. }
  10. },
  11. {
  12. "cmd": "update",
  13. "timestamp": 1401342874778,
  14. "fields": {
  15. "id": "2",
  16. "title": "This is the new title"
  17. }
  18. },
  19. {
  20. "cmd": "delete",
  21. "fields": {
  22. "id": "3"
  23. }
  24. }
  25. ]

注意:

  • 应用表中的LITERAL字段类型,如果推送数据为布尔值,必须使用双引号括起来。
  • INT_ARRAY 及 LITERAL_ARRAY 字段类型,需要使用JsonArray来处理。对应值必须使用[]符号括起来。例如 int_array_name”: [14,85] 或者 “literal_array_name”: [“abc”,”xyz”]
  • 最外层是JsonArray类型,支持多个文档批量操作,可理解为打包操作。

cmd(必选)

  • 定义该文档操作行为,可以为ADDUPDATE(标准版不支持)、DELETE
  • 建议对文档进行打包,进行批量操作,提高网络交互及处理效率。
  • ADD:表示新增文档,如果同步过来的文档主键值在对应应用表中已存在,会覆盖。
  • UPDATE:表示更新文档,对主键对应文档进行部分字段更新。如果同步过来的增量文档主键值在对应应用表中不存在,老高级版应用会转ADD,新高级版会报错。
  • delete:表示删除文档,如果该主键对应文档已经不存在,则认为删除成功。

timestamp(可选)

用于记录文档实际发生时间,单位为毫秒。系统会使用该时间戳来作为同一主键文档更新顺序的判断标准。如果没有timestamp项,则默认以文档发送到OpenSearch的时间作为文档更新时间来进行保序操作。

fields(必选)

要操作的文档内容,主键字段必选,系统所有操作都是通过主键来进行的。对于DELETE操作,只需要提供文档主键参数即可。

返回结果

参数 类型 描述
status string 执行结果,OK为成功,FAIL为失败,请根据返回错误码进行排查
request_id string 该条查询的记录id,主要用于排查问题使用

示例

请求(此处省略了公共参数及编码等因素):

  1. http://$host/index/doc/test_create_index?action=push&table_name=main
  2. //items建议放到body体中
  3. items=[{"cmd":"add","timestamp": 1401342874777,"fields": {"id": "1","title": "This is the title","body": "This is the body"}]

成功返回:

  1. {"status":"OK","request_id":"1422348642065805100373587"}

错误返回:

  1. {"status":"FAIL","errors":[{"code":4012,"message":"Table dose not exist"}],"request_id":"1422348739084222300234072"}

注意:

  • 使用API/SDK推送数据有次数及大小限制,具体值请参考系统限制项。
  • 数据上传后请务必检查返回值,并对相关错误码进行重试(尤其是3007错误),否则会出现数据丢失情况。同时,数据处理是异步的,系统返回“OK”后只表示系统接收数据成功,数据处理过程的错误会在控制台错误信息中展示,请注意及时检查。
  • Post 每秒提交的数据包总大小有限制,如果您上传的文档过大(2M以上),服务器将拒绝接收任何参数,同时返回异常,参考系统限制文档。
  • POST的url及body部分最好都要做url_encode,否则会出现解析及签名问题。
本文导读目录