全部产品
Search
文档中心

智能开放搜索 OpenSearch:数据采集2.0 SDK

更新时间:Dec 13, 2023

数据采集SDK

SDK功能简介

数据采集文档推送类。

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

Java SDK 版本说明

PHP SDK 相关下载

Python SDK 行为数据推送Demo

Go SDK 行为数据推送Demo

C# SDK 行为数据推送Demo

  • 类名:DataCollectionClient

  • 命名空间:OpenSearch\Client

接口描述

构造方法。

接口定义

voidOpenSearch\Client\DataCollectionClient::__construct(\OpenSearch\Client\OpenSearchClient $openSearchClient)

参数描述

参数名称

类型

描述

$openSearchClient

OpenSearch\Client\OpenSearchClient

基础类,负责计算签名,和服务端进行交互和返回结果。


add

接口描述

增加一条文档。

说明

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

接口定义

\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,避免丢数据的可能。

接口定义

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

参数描述

参数名称

类型

描述

$searchAppName

string

关联的搜索应用名

$dataCollectionName

string

数据采集名称,开通时控制台会返回该名称

$dataCollectionType

string

数据采集类型:BEHAVIOR


push

接口描述

批量推送文档。

说明

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

接口定义

\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

数据采集类型:BEHAVIOR


Push 推送采集数据 PHP Demo

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

Commit 推送采集数据 PHP Demo

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

Push 推送采集数据 Java Demo

package com.aliyun.opensearch.demo;
import com.aliyun.opensearch.DataCollectionClient;
import com.aliyun.opensearch.OpenSearchClient;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchResult;
public class PushDataCollectionDoc {
    private static String accesskey = "your ak";
    private static String secret = "your secret";
    private static String host = "your host";
    private static String searchAppName = "opensearch_app_name";
    private static String dataCollectionName = "opened_data_collection_name";
    private static String dataCollectionType = "BEHAVIOR";
    public static void main(String[] args) {
        //创建并构造OpenSearch对象
        OpenSearch opensearch = new OpenSearch(accesskey, secret, host);
        //创建OpenSearchClient对象,并以OpenSearch对象作为构造参数
        OpenSearchClient client = new OpenSearchClient(opensearch);
        //创建DataCollectionClient对象,并以OpenSearchClient对象作为构造参数
        DataCollectionClient dataCollectionClient = new DataCollectionClient(client);
        // 直接推送文档
        String docJson = "[{\"cmd\":\"ADD\",\"fields\":{\"user_id\":\"1120021255\","+
                         "\"biz_id\":1365378,\"rn\":\"156516585419723283227314\","+
                         "\"trace_id\":\"Alibaba\","+
                         "\"trace_info\":\"%7B%22request%5Fid%22%3A%22156516585419723283227314%22%2C%22scm%22%3A%2220140713.120006678..%22%7D\","+
                         "\"item_id\":\"id\",\"item_type\":\"goods\","+
                         "\"bhv_type\":\"click\",\"bhv_time\":\"1566475047\"}}]";
        try {
            OpenSearchResult openSearchResult = dataCollectionClient.push(docJson, 
                                                searchAppName, dataCollectionName, 
                                                dataCollectionType);
            System.out.println(openSearchResult);
        } catch (Exception e) {
            e.printStackTrace();
            assertTrue(false);
            return;
        }
    }
}

Commit 推送采集数据 Java Demo

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