Search Asset Node


查询满足条件的资产。

请求格式

POST https://{apigw-address}/asset-tree-service/v2.1/asset-nodes?action=searchAsset

请求参数(URI)

名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

资产所属的组织 ID。如何获取 orgId 信息>>

请求参数(Body)

备注

可使用 expressionfilter 进行搜索,但不能同时使用。EnOS Cloud 仅支持 expression 进行搜索,EnOS Edge 则支持 expressionfilter.


名称

必需/可选

数据类型

描述

expression

可选

String

查询表达式,目前支持的字段有 assetIdsmodelIdsrootModelIdsnameattributestagstreeIdcreateTimeproductKeydeviceKey

  • assetIdsmodelIdsrootModelIds :支持 in。

  • productKeydeviceKey :支持 like 模糊查询,支持 = 运算符。

  • createTime :支持=、<=、>= 运算符。筛选的是 Asset 的创建时间

  • tags.* :支持 like 模糊查询,支持 exists 和 in 查询。

  • name:支持指定语言模糊查询:

    • name like 'xxx':模糊查询 default、中文和英文名称。

    • name.default like 'xxx':模糊查询默认名称。

    • name.zh_CN like 'xxx':模糊查询中文名称,不存在中文名称时模糊查询 default 名称。

    • name.en_US like 'xxx':模糊查询英文名称,不存在英文名称时模糊查询 default 名称。

不能将其与 filter 一起使用。如何使用查询表达式>>

filter

可选

AssetSearchVo 结构体

查询条件。不能将其与 expression 一起使用。AssetSearchVo 结构体 >>.

注:EnOS Cloud 不支持该参数。

pagination

可选

Pagination 请求结构体

随机分页。如未指定,默认每页100条。每页最大记录数为 1000 条,但为获得最佳性能,建议每页不超过 50 条。不支持使用 sorters 参数对结果进行排序。Pagination 请求结构体>>

projection

可选

Projection 结构体

用于在接口请求中描述待返回的对象 projection。参数如何对结果集做裁剪>>

注:EnOS Edge 不支持该参数。

AssetSearchVo 结构体

名称

必需/可选

数据类型

描述

assetIds

可选

String Array

资产列表。

modelIds

可选

String Array

模型列表。

rootModelIds

可选

String Array

根模型列表。

attributes

可选

Map (Key 为 String,Value 为 Object)

资产所属的模型属性。

tags

可选

Map (Key 和 Value 为 String)

用户自定义标签。

nameLike

可选

I18nSearchVo 结构体

资产名称,支持模糊搜索。其结构参见 I18nSearchVo 结构体

I18nSearchVo 结构体

名称

必需/可选

数据类型

描述

locale

可选

String

语言类型,只支持 default、zh_CN、en_US、ja_JP 和 es_ES。

value

可选

String

资产名称在所属语言下的值。如果为 null,则无数据返回;如果传入空字符串,则返回对应语言下的所有数据。

响应参数

名称

数据类型

描述

data

数组

资产列表。信息包括来自 Asset 结构体assetIdnameattributes

错误码

代码

错误信息

描述

99400

Invalid arguments

请求参数非法,请检查请求参数。

99500

System error

服务器内部错误,请联系EnOS。

示例

请求示例

url: https://{apigw-address}/asset-tree-service/v2.1/asset-nodes?action=searchAsset&orgId=yourOrgId
method: POST
requestBody:
{
"projection": ["attributes", "assetId", "name"]
}

返回示例

{
    "code": 0,
    "msg": "OK",
    "requestId": "cf08e75c-325a-429f-bdb9-ec5d6a1250d7",
    "pagination": {
       "pageNo": 1,
       "pageSize": 10,
       "totalSize": 10,
       "sortedBy": null
    },
    "data": [{
       "assetId": "f1Y6KiOr",
       "name": {
           "i18nValue": {},
           "defaultValue": "earth"
       },
       "attributes": {
           "starsystem": "Solar System",
           "de001": 123
       }
    }, {
       "assetId": "WHIFQDEZ",
       "name": {
           "i18nValue": {},
           "defaultValue": "earth"
       },
       "attributes": {
           "starsystem": "Solar System",
           "de001": 123
       }
    }, {
       "assetId": "TdqGOisO",
       "name": {
           "i18nValue": {},
           "defaultValue": "earth"
       },
       "attributes": {
           "starsystem": "Solar System",
           "de001": 123
       }
    }, {
       "assetId": "T9VewFFA",
       "name": {
           "i18nValue": {},
           "defaultValue": "venus"
       },
       "attributes": {
           "starsystem": "Solar System",
           "de001": 123
       }
    }, {
       "assetId": "NU3EbpXK",
       "name": {
           "i18nValue": {},
           "defaultValue": "1559140566137"
       },
       "attributes": {
           "starsystem": "Solar System",
           "de001": 123
       }
    }, {
       "assetId": "9AE1XYBl",
       "name": {
           "i18nValue": {},
           "defaultValue": "earth"
       },
       "attributes": {
           "starsystem": "Solar System",
           "de001": 123
       }
    }, {
       "assetId": "ZPuCIbDw",
       "name": {
           "i18nValue": {},
           "defaultValue": "earth"
       },
       "attributes": {
           "starsystem": "Solar System",
           "de001": 123
       }
    }]
}

Java SDK 调用示例

package com.envisioniot.enos.asset_tree_service;

import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envisioniot.enos.api.common.constant.request.Projection;
import com.envisioniot.enos.asset_tree_service.v2_1.*;
import com.envisioniot.enos.asset_tree_service.vo.AssetSearchVo;
import com.envisioniot.enos.asset_tree_service.vo.RelatedAssetSearchVo;
import org.junit.Test;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class SearchNodeTest {
    private static String AccessKey = "yourAccessKey";
    private static String SecretKey = "yourSecretKey";
    private static String OrgId = "yourOrgId";
    private static String ServerUrl = "yourServerUrl";

    @Test
    public void testSearchAssetNode() {
        SearchAssetNodeRequest request = new SearchAssetNodeRequest();
        request.setOrgId(OrgId);
        request.setExpression("name.default like'assetDefaultName'");
        Projection projection = new Projection();
        projection.addAll(Arrays.asList("attributes", "assetId", "name"));
        request.setProjection(projection);
        SearchAssetNodeResponse response = Poseidon.config(PConfig.init().appKey(AccessKey).appSecret(SecretKey).debug())
            .url(ServerUrl).getResponse(request, SearchAssetNodeResponse.class);
    }
}