开发者社区> 问答> 正文

如何搜索指定发布信息

本文介绍 OnsPublishSearch 接口,调用该接口根据搜索条件查询相关的发布关系。

1. 使用场景

OnsPublishSearch 接口一般用在用户账号下 PID 太多无法同时展现时,根据关键字搜索符合条件的发布关系,展现的数据格式和 OnsPublishGet 接口一致。

2. 请求参数列表

名称    类型    是否必须    描述
OnsRegionId    String    是    当前查询 MQ 所在区域,可以通过 OnsRegionList 方法获取
OnsPlatform    String    否    该请求来源,默认是从 POP 平台
PreventCache    Long    是    用于 CSRF 校验,设置为系统当前时间即可
Search    String    是    搜索的关键词,可以是 Topic 或者 PID
3. 返回参数列表

名称    类型    描述
RequestId    String    为公共参数,每个请求独一无二
HelpUrl    String    帮助链接
Data    List(PublishInfoDo)    查询结果集合
PublishInfoDo数据结构

成员    类型    描述
id    Long    该发布信息在数据库中的 ID
channelId    Integer    该 Topic 所在区域 ID,0-ALIYUN,1-CLOUD,2,3,4
channelName    String    该 Topic 所在区域名称,ALIYUN 代表阿里云,CLOUD 代表聚石塔,…
onsRegionId    Long    该 Topic 所在区域 ID,就是 ONSRegionList 方法获取的内容
regionName    String    该 Topic 所在区域名称
topic    String    Topic 名称
owner    String    Topic 所有者编号
relation    Integer    所有关系编号1为持有者,2为可以发布,4为可以订阅,6为可以发布和订阅
relationName    String    所有关系名称,例如持有者、可订阅、可发布、可发布订阅
status    Integer    当前状态编号0-服务中
statusName    String    当前状态别名,服务中
appkey    Integer    null
createTime    Long    创建时间
updateTime    Long    更新时间
remark    String    备注,可以不填
4. 相关 API

OnsPublishDelete:删除发布关系
OnsPublishGet:查询发布关系
OnsPublishCreate:新建发布关系
5. 使用示例

调用示例

本示例以 PID_Mingduan 为搜索条件搜索 daily 区域下相关的 PID 信息,并将结果打印。

    public static void main(String []args) {
            String regionId = "cn-hangzhou";
            String accessKey = "XXXXXXXXXXXXXXXXX";
            String secretKey = "XXXXXXXXXXXXXXXXX";
            String endPointName ="cn-hangzhou";
            String productName ="Ons";
            String domain ="ons.cn-hangzhou.aliyuncs.com";
            /**
            *根据自己需要访问的区域选择Region,并设置对应的接入点
            */
            try {
                DefaultProfile.addEndpoint(endPointName,regionId,productName,domain);
            } catch (ClientException e) {
                e.printStackTrace();
            }
            IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey);
            IAcsClient iAcsClient= new DefaultAcsClient(profile);
            OnsPublishSearchRequest request = new OnsPublishSearchRequest();
            /**
            *ONSRegionId是指你需要API访问MQ哪个区域的资源.
            *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值
            */
            request.setOnsRegionId("daily");
            request.setPreventCache(System.currentTimeMillis());
            request.setAcceptFormat(FormatType.JSON);
            request.setSearch("PID_Mingduan");
            try {
                OnsPublishSearchResponse response=iAcsClient.getAcsResponse(request);
                List<OnsPublishSearchResponse.PublishInfoDo> publishInfoDoList =response.getData();
                for (OnsPublishSearchResponse.PublishInfoDo publishInfoDo:publishInfoDoList){
                    System.out.println(publishInfoDo.getId()+"  "+
                            publishInfoDo.getChannelId()+"  "+
                            publishInfoDo.getChannelName()+"  "+
                            publishInfoDo.getOnsRegionId()+"  "+
                            publishInfoDo.getRegionName()+"  "+
                            publishInfoDo.getOwner()+"  "+
                            publishInfoDo.getProducerId()+"  "+
                            publishInfoDo.getTopic()+"  "+
                            publishInfoDo.getStatus()+"  "+
                            publishInfoDo.getStatusName()+"  "+
                            publishInfoDo.getCreateTime()+"  "+
                            publishInfoDo.getUpdateTime());
                }
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                e.printStackTrace();
            }
        }

展开
收起
猫饭先生 2017-10-27 13:34:30 1969 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
阿里云搜索产品年度升级发布 立即下载
《开放搜索查询分析服务架构分享》 立即下载
《开放搜索统一召回引擎实践》 立即下载