全部产品
云市场

数据采集2.0 SDK

更新时间:2019-08-29 11:09:29

数据采集SDK

SDK功能简介

数据采集文档推送类。

管理搜索应用的数据采集文档推送,包含单条推送文档、批量推送文档等。

Java 3.4.0SDK 下载地址

PHP 3.2.0SDK 下载地址

  • 类名: DataCollectionClient
  • 命名空间: OpenSearch\Client

接口描述

构造方法。

接口定义

  1. void OpenSearch\Client\DataCollectionClient::__construct(\OpenSearch\Client\OpenSearchClient $openSearchClient)

参数描述

参数名称 类型 描述
$openSearchClient OpenSearch\Client\OpenSearchClient 基础类,负责计算签名,和服务端进行交互和返回结果。

add

接口描述

增加一条文档。

Note:
这条文档只是增加到 SDK Client buffer 中,没有正式提交到服务端;只有调用了 commit 方法才会被提交到服务端。
你可以多次 add 然后调用 commit() 统一提交。

接口定义

  1. \OpenSearch\Generated\Common\OpenSearchResult OpenSearch\Client\DataCollectionClient::add(array $fields)

参数描述

参数名称 类型 描述
$fields array 一条行为数据(或用户数据、物品数据)文档的所有字段,例如array(“user_id” => “1021468”, “bhv_type” => “click”);

commit

接口描述

把 SDK Client buffer 中的文档发布到服务端。

Note:
在发送之前会把 buffer 中的文档清空,所以如果服务端返回错误需要重试的情况下,需要重新生成文档并 commit,避免丢数据的可能。

接口定义

  1. \OpenSearch\Generated\Common\OpenSearchResult OpenSearch\Client\DataCollectionClient::commit(string $searchAppName, string $dataCollectionName, string $dataCollectionType)

参数描述

参数名称 类型 描述
$searchAppName string 关联的搜索应用名
$dataCollectionName string 数据采集名称,开通时控制台会返回该名称
$dataCollectionType string 数据采集类型:BEHAVIOR

push

接口描述

批量推送文档。

Note:
此操作会同步发送文档到服务端。

接口定义

  1. \OpenSearch\Generated\Common\OpenSearchResult OpenSearch\Client\DataCollectionClient::push(string $docJson, string $searchAppName, string $dataCollectionName, string $dataCollectionType)

参数描述

参数名称 类型 描述
$docJson string 文档 list,为 JSON 格式
$searchAppName string 关联的搜索应用名
$dataCollectionName string 数据采集名称,开通时控制台会返回该名称
$dataCollectionType string 数据采集类型:USER、ITEM_INFO、BEHAVIOR、INDUSTRY_SPECIFIC

Push 推送采集数据 PHP Demo

  1. <?php
  2. require_once("Config.inc.php");
  3. use OpenSearch\Client\DataCollectionClient;
  4. use OpenSearch\Generated\DataCollection\Command;
  5. $searchAppName = "opensearch_app_name";
  6. $dataCollectionName = "opened_data_collection_name";
  7. $dataCollectionType = "BEHAVIOR";
  8. $docs = json_encode(array(
  9. [
  10. "cmd" => Command::$__names[Command::ADD],
  11. "fields" => [
  12. // 用户唯一标识
  13. "user_id" => "1120021255",
  14. // 业务侧用于区分不同业务的数值ID 对应一个开放搜索应用
  15. "biz_id" => 1365378,
  16. // 搜索结果中返回的request_id的值,原样回传即可
  17. "rn" => "156516585419723283227314",
  18. // 如果是来自开放搜索的结果,该字段值设置为Alibab
  19. "trace_id" => "Alibaba",
  20. // 搜索结果中返回的ops_request_misc的值,原样回传即可
  21. "trace_info" => "%7B%22request%5Fid%22%3A%22156516585419723283227314%22%2C%22scm%22%3A%2220140713.120006678..%22%7D",
  22. // 开放搜索应用中主表主键值
  23. "item_id" => "2223",
  24. // item类型为 物品、商品
  25. "item_type" => "goods",
  26. // 点击类行为数据
  27. "bhv_type" => "click",
  28. // 行为发生的秒级时间戳
  29. "bhv_time" => "1566475047"
  30. ]
  31. ]
  32. ));
  33. // 创建DataCollectionClient对象,并以OpenSearchClient对象作为构造参数
  34. $dataCollectionClient = new DataCollectionClient($client);
  35. $ret = $dataCollectionClient->push($docs, $searchAppName, $dataCollectionName, $dataCollectionType);
  36. print_r(json_decode($ret->result, true));

Commit 推送采集数据 PHP Demo

  1. <?php
  2. require_once("Config.inc.php");
  3. use OpenSearch\Client\DataCollectionClient;
  4. use OpenSearch\Generated\DataCollection\Command;
  5. $searchAppName = "opensearch_app_name";
  6. $dataCollectionName = "opened_data_collection_name";
  7. $dataCollectionType = "BEHAVIOR";
  8. // 创建DataCollectionClient对象,并以OpenSearchClient对象作为构造参数
  9. $dataCollectionClient = new DataCollectionClient($client);
  10. // 增加一条文档
  11. // 这条文档只是增加到 SDK Client buffer中,没有正式提交到服务端;只有调用了 commit 方法才会被提交到服务端。
  12. // 可以多次调用 add,然后调用commit() 统一提交。
  13. $dataCollectionClient->add([
  14. // 用户唯一标识
  15. "user_id" => "1120021255",
  16. // 业务侧用于区分不同业务的数值ID 对应一个开放搜索应用
  17. "biz_id" => 1365378,
  18. // 搜索结果中返回的request_id的值,原样回传即可
  19. "rn" => "156516585419723283227314",
  20. // 如果是来自开放搜索的结果,该字段值设置为Alibab
  21. "trace_id" => "Alibaba",
  22. // 搜索结果中返回的ops_request_misc的值,原样回传即可
  23. "trace_info" => "%7B%22request%5Fid%22%3A%22156516585419723283227314%22%2C%22scm%22%3A%2220140713.120006678..%22%7D",
  24. // 开放搜索应用中主表主键值
  25. "item_id" => "2223",
  26. // item类型为 物品、商品
  27. "item_type" => "goods",
  28. // 点击类行为数据
  29. "bhv_type" => "click",
  30. // 行为发生的秒级时间戳
  31. "bhv_time" => "1566475047"
  32. ]);
  33. $ret = $dataCollectionClient->commit($searchAppName, $dataCollectionName, $dataCollectionType);
  34. print_r(json_decode($ret->result, true));

Push 推送采集数据 Java Demo

  1. package com.aliyun.opensearch.demo;
  2. import com.aliyun.opensearch.DataCollectionClient;
  3. import com.aliyun.opensearch.OpenSearchClient;
  4. import com.aliyun.opensearch.sdk.generated.OpenSearch;
  5. import com.aliyun.opensearch.sdk.generated.commons.OpenSearchResult;
  6. public class PushDataCollectionDoc {
  7. private static String accesskey = "your ak";
  8. private static String secret = "your secret";
  9. private static String host = "your host";
  10. private static String searchAppName = "opensearch_app_name";
  11. private static String dataCollectionName = "opened_data_collection_name";
  12. private static String dataCollectionType = "BEHAVIOR";
  13. public static void main(String[] args) {
  14. //创建并构造OpenSearch对象
  15. OpenSearch opensearch = new OpenSearch(accesskey, secret, host);
  16. //创建OpenSearchClient对象,并以OpenSearch对象作为构造参数
  17. OpenSearchClient client = new OpenSearchClient(opensearch);
  18. //创建DataCollectionClient对象,并以OpenSearchClient对象作为构造参数
  19. DataCollectionClient dataCollectionClient = new DataCollectionClient(client);
  20. // 直接推送文档
  21. String docJson = "[{\"cmd\":\"ADD\",\"fields\":{\"user_id\":\"1120021255\","+
  22. "\"biz_id\":1365378,\"rn\":\"156516585419723283227314\","+
  23. "\"trace_id\":\"Alibaba\","+
  24. "\"trace_info\":\"%7B%22request%5Fid%22%3A%22156516585419723283227314%22%2C%22scm%22%3A%2220140713.120006678..%22%7D\","+
  25. "\"item_id\":\"id\",\"item_type\":\"goods\","+
  26. "\"bhv_type\":\"click\",\"bhv_time\":\"1566475047\"}}]";
  27. try {
  28. OpenSearchResult openSearchResult = dataCollectionClient.push(docJson,
  29. searchAppName, dataCollectionName,
  30. dataCollectionType);
  31. System.out.println(openSearchResult);
  32. } catch (Exception e) {
  33. e.printStackTrace();
  34. assertTrue(false);
  35. return;
  36. }
  37. }
  38. }

Commit 推送采集数据 Java Demo

  1. package com.aliyun.opensearch.demo;
  2. import com.aliyun.opensearch.DataCollectionClient;
  3. import com.aliyun.opensearch.OpenSearchClient;
  4. import com.aliyun.opensearch.sdk.generated.OpenSearch;
  5. import com.aliyun.opensearch.sdk.generated.commons.OpenSearchResult;
  6. import java.util.HashMap;
  7. import java.util.Map;
  8. public class PushDataCollectionDoc {
  9. private static String accesskey = "your ak";
  10. private static String secret = "your secret";
  11. private static String host = "your host";
  12. private static String searchAppName = "opensearch_app_name";
  13. private static String dataCollectionName = "opened_data_collection_name";
  14. private static String dataCollectionType = "BEHAVIOR";
  15. public static void main(String[] args) {
  16. //创建并构造OpenSearch对象
  17. OpenSearch opensearch = new OpenSearch(accesskey, secret, host);
  18. //创建OpenSearchClient对象,并以OpenSearch对象作为构造参数
  19. OpenSearchClient client = new OpenSearchClient(opensearch);
  20. //创建DataCollectionClient对象,并以OpenSearchClient对象作为构造参数
  21. DataCollectionClient dataCollectionClient = new DataCollectionClient(client);
  22. Map<String, Object> fields = new HashMap<String, Object>();
  23. // 用户唯一标识
  24. fields.put("user_id", "1120021255");
  25. // 业务侧用于区分不同业务的数值ID 对应一个开放搜索应用
  26. fields.put("biz_id", 1365378);
  27. // 搜索结果中返回的request_id的值,原样回传即可
  28. fields.put("rn", "1564455556323223680397827");
  29. // 如果是来自开放搜索的结果,该字段值设置为Alibab
  30. fields.put("trace_id", "Alibaba");
  31. // 搜索结果中返回的ops_request_misc的值,原样回传即可
  32. fields.put("trace_info", "%7B%22request%5Fid%22%3A%22156516585419723283227314%22%2C%22scm%22%3A%2220140713.120006678..%22%7D");
  33. // 开放搜索应用中主表主键值
  34. fields.put("item_id", "2223");
  35. // item类型为 物品、商品
  36. fields.put("item_type", "goods");
  37. // 点击类行为数据
  38. fields.put("bhv_type", "click");
  39. // 行为发生的秒级时间戳
  40. fields.put("bhv_time", "1566475047");
  41. //增加一条文档
  42. //这条文档只是增加到 SDK Client buffer中,没有正式提交到服务端;只有调用了 commit 方法才会被提交到服务端。
  43. //可以多次调用 add,然后调用commit() 统一提交。
  44. dataCollectionClient.add(fields);
  45. try {
  46. OpenSearchResult openSearchResult = dataCollectionClient.commit(searchAppName, dataCollectionName, dataCollectionType);
  47. System.out.println(openSearchResult);
  48. } catch (Exception e) {
  49. e.printStackTrace();
  50. return;
  51. }
  52. }
  53. }