服务数据更新API

1. 参数

1.1. 入参

参数名称

参数类型

是否必填

参数描述

action

String

api名称,待定

serviceId

Long

服务id

conditions

Object

更新条件,相当于es更新api的body,符合es的参数格式

{
    "serviceId": 1,
    "conditions": {
        "query": {
            "term": {
                "id": 1
            }
        },
        "script": {
            "source": "ctx._source.content = '测试内容1-修改1'"
        }
    }
}

1.2. 出参

参数名称

参数类型

参数描述

code

Integer

错误码

success

Boolean

是否成功

requestId

String

请求id

msg

String

响应信息

data

Object

响应内容

{
  "code": 200,
  "data": null,
  "success": true,
  "msg": null,
  "requestId": "4117446A-308C-4CA6-B265-39F4A96C30B5"
}

2. SDK调用

2.1. Java SDK

2.1.1. Maven依赖

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.6.0</version>
</dependency>

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alinlp20200629</artifactId>
    <version>2.2.0</version>
</dependency>

2.1.2. 调用示例

/**
 * 使用AK&SK初始化账号Client
 * @param accessKeyId
 * @param accessKeySecret
 * @return Client
 * @throws Exception
 */
public static Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
    Config config = new Config()
    // 必填,您的 AccessKey ID
    .setAccessKeyId(accessKeyId)
    // 必填,您的 AccessKey Secret
    .setAccessKeySecret(accessKeySecret);
    // Endpoint 请参考 https://api.aliyun.com/product/alinlp
    config.endpoint = "alinlp.cn-beijing.aliyuncs.com";
    return new Client(config);
}


public static void main(String[] args_) throws Exception {
    UpdateServiceData();
}

public static void UpdateServiceData() throws Exception {
    // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html
    Client client = createClient(AccessConstant.AK3, AccessConstant.SK3);
    Map<String, JSONObject> conditions = new HashMap<>();
    conditions.put("query", JSON.parseObject("{\"term\":{\"id\":1}}"));
    conditions.put("script", JSON.parseObject("{\"source\":\"ctx._source.content = '测试内容1-修改2'\"}"));
    UpdateServiceDataRequest requset = new UpdateServiceDataRequest()
            .setServiceId(1L).setConditions(conditions);
    try {
        UpdateServiceDataResponse response = client.updateServiceData(requset);
        System.out.println(JSON.toJSONString(response.getBody(), SerializerFeature.PrettyFormat));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

2.2. Python SDK

2.2.1. pip源

pip install aliyun-python-sdk-alinlp==1.0.23
pip install aliyun-python-sdk-core

2.2.2. 调用示例

from aliyunsdkalinlp.request.v20200629 import UpdateServiceDataRequest
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.auth.credentials import AccessKeyCredential
import os

os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] = 'xxxx'
os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] = 'xxxx'


def update_service_data():
    credentials = AccessKeyCredential(os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                                      os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'])
    client = AcsClient(region_id='cn-beijing', credential=credentials)
    request = UpdateServiceDataRequest.UpdateServiceDataRequest()
    request.set_service_id(1)
    request.set_conditions(json.loads("{\"serviceId\":1,\"conditions\":{\"query\":{\"term\":{\"id\":1}},\"script\":{\"source\":\"ctx._source.content = '测试内容1-修改1'\"}}}"))
    request.set_accept_format('json')
    response = client.do_action_with_exception(request)
    # python2:  print(response)
    print(str(response, encoding='utf-8'))


if __name__ == '__main__':
    update_service_data()