统计数据

本文档介绍如何使用Java、Python语言获取表的统计数据。

相关依赖

Java异步

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-sdk-ha3engine-async</artifactId>
  <version>1.1.3</version>
</dependency>

Java

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-sdk-ha3engine-vector</artifactId>
    <version>1.1.8</version>
</dependency>

Python

#Requires: Python >=3.6
pip install alibabacloud-ha3engine-vector

Go

go get github.com/aliyun/alibabacloud-ha3-go-sdk@v1.1.8-vector

参数说明

Java、Python SDK中都需要配置如下4个必要参数(endpointinstance_id、access_user_name、access_pass_word):

  • endpoint:私网/公网域名

可在实例详情页中网络信息和API入口查看:

image.png

开启公网访问后可以在本地通过公网域名(包含public的域名)调用实例,可以参考添加白名单配置访问的白名单IP。

若有ECS机器,可通过配置相同的交换机通过API域名调用实例。

  • instance_id:实例ID

image.png

  • access_user_name:用户名

  • access_pass_word:密码

用户名和密码可以在实例详情页中API入口处进行查看:(密码是购买实例时设置的,可以修改)

image.png

SDK 示例

Java异步

package com.aliyun.ha3engine;

import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

import com.aliyun.ha3engine.async.AsyncClient;
import com.aliyun.ha3engine.async.models.SearchResponse;
import com.aliyun.ha3engine.async.models.StatsRequest;
import com.aliyun.sdk.ha3engine.async.core.AsyncConfigInfoProvider;
import com.aliyun.tea.TeaException;

import darabonba.core.client.ClientOverrideConfiguration;

/**
 * @author alibaba
 */
public class SearchDoc {

    public static void main(String[] args) throws Exception {
        try {
            // 配置实例的用户名密码, 可在实例详情页>网络信息 查看
            AsyncConfigInfoProvider provider = AsyncConfigInfoProvider.create("username", "password");

            // 初始化异步客户端
            AsyncClient client = AsyncClient.builder()
                    .credentialsProvider(provider)
                    .overrideConfiguration(
                            ClientOverrideConfiguration.create()
                                    //公网域名, 实例名可在实例详情页>API入口 查看
                                    .setEndpointOverride("ha-cn-***********.public.ha.aliyuncs.com")
                            .setProtocol("http")
                    ).build();
            StatsRequest statsRequest = StatsRequest.builder().tableName("table_name").build();
            CompletableFuture<SearchResponse> searchResponseCompletableFuture = client.stats(statsRequest);
            String responseBody = searchResponseCompletableFuture.get().getBody();

            System.out.println("result:" + responseBody);

        } catch (ExecutionException | InterruptedException e) {
            System.out.println(e.getMessage());
        } catch (TeaException e) {
            System.out.println(e.getMessage());
            Map<String, Object> abc = e.getData();
            System.out.println(com.aliyun.teautil.Common.toJSONString(abc));
        }
    }
}

Java

package com.aliyun.ha3engine.demo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;

import com.aliyun.ha3engine.vector.Client;
import com.aliyun.ha3engine.vector.models.Config;
import com.aliyun.ha3engine.vector.models.SearchResponse;
import com.aliyun.tea.TeaException;

import org.junit.Before;
import org.junit.Test;

public class Demo {

    /**
     * 问天引擎client
     */
    private Client client;

    @Before
    public void clientInit() throws Exception {

        /*
          初始化问天引擎client
         */
        Config config = new Config();

        //  实例名称,可在实例详情页左上角查看,例:ha-cn-i7*****605
        config.setInstanceId("ha-cn-i7*****605");

        // 用户名,可在实例详情页>网络信息 查看
        config.setAccessUserName("username");

        // 密码,可在实例详情页>网络信息 修改
        config.setAccessPassWord("password");

        //私网域名调用请填写endpoint
        config.setEndpoint("ha-cn-i7*****605.public.ha.aliyuncs.com");
        //公网ip调用填写httpProxy,如需要公网IP调用,请打开如下注释
        // config.setHttpProxy("http://116.62.***.***:80");

        client = new Client(config);

    }

    @Test
    public void stats() throws Exception {
        try {
            SearchResponse searchResponse = client.stats("gist");
            System.out.println("搜索结果:\n" + searchResponse.getBody());
        } catch (TeaException e) {
            System.out.println(e.getCode());
            System.out.println(e.getMessage());
            Map<String, Object> abc = e.getData();
            System.out.println(com.aliyun.teautil.Common.toJSONString(abc));
        }
    }

}

Python

from alibabacloud_ha3engine_vector.client import Client
from alibabacloud_ha3engine_vector.models import Config

config = Config(
        # 私网域名调用请填写endpoint
        endpoint="ha-cn-7mz2ougaw02.ha.aliyuncs.com",
        # 实例名称,可在实例详情页左上角查看,例:ha-cn-i7*****605
        instance_id="ha-cn-7mz2ougaw02",
        # 用户名,可在实例详情页>网络信息 查看
        access_user_name="user",
        # 密码,可在实例详情页>网络信息 修改
        access_pass_word="111111")
client = Client(config)

result = client.stats("gist")

Go

package main

import (
	"fmt"
	"github.com/alibabacloud-go/tea/tea"
	ha3engine "github.com/aliyun/alibabacloud-ha3-go-sdk/client"
)

func main() {

	// 创建请求客户端配置
	config := &ha3engine.Config{
		// 私网域名或者公网域名
		Endpoint: tea.String("<Endpoint>"),
		//  实例名称,可在实例详情页左上角查看,例:ha-cn-i7*****605
		InstanceId: tea.String("<InstanceId>"),
		// 用户名,可在实例详情页>网络信息 查看
		AccessUserName: tea.String("<AccessUserName>"),
		// 密码,可在实例详情页>网络信息 修改
		AccessPassWord: tea.String("<AccessPassWord>"),
	}

	// 初始化一个client, 用以发送请求.
	client, _clientErr := ha3engine.NewClient(config)

	// 如果 NewClient 过程中出现异常. 则 返回 _clientErr 且输出 错误信息.
	if _clientErr != nil {
		fmt.Println(_clientErr)
		return
	}

	stats(client)
}

/**
 * 数据统计
 */
func stats(client *ha3engine.Client) {
	response, _requestErr := client.Stats(tea.String("api"))

	// 如果 发送请求 过程中出现异常. 则 返回 _requestErr 且输出 错误信息.
	if _requestErr != nil {
		fmt.Println(_requestErr)
		return
	}

	// 输出正常返回的 response 内容.
	fmt.Println(response)

}

说明

  • 请求的相应结果可参考流量API说明>统计数据中的返回参数

  • 不要使用go get github.com/aliyun/alibabacloud-ha3-go-sdk命令拉取git依赖,必须后面指定版本,因为向量检索版和召回引擎版的tag都在同一个github下,拉取依赖的时候需根据实例的版本拉取对应依赖