opensearch的使用

阿里云开放搜索OpenSearch是一款阿里巴巴自主研发的大规模分布式搜索引擎平台,该平台承载了淘宝、天猫、1688、神马搜索、口碑、菜鸟等搜索业务,通过OpenSearch云服务的方式,将阿里巴巴成熟的搜索技术共享给广大开发者

opensearch一般用于页面搜索,QPS数量不能太高(跟收费有关),可用于带语义的查询,数据存与阿里云,性能尚可

一,开通阿里云会员,熟悉api接口文档,下载相关jar包

二,工程配置:

      1,applicationContext.xml文件内配置:

      

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
   <list>
    <value>file:${catalina.home}/etc/db/jdbc.properties</value>
    <value>file:${catalina.home}/etc/aliyun/opensearch.properties</value>
   </list>
  </property>
 </bean>

    2,tomcat里面添加相关配置:

    

#存OpenSearch相关配置
opensearch.accessKeyId=这里是accessKeyId的值
opensearch.accessKeySecret=这里是accessKeySecret的值
opensearch.endpoint=http://opensearch.aliyuncs.com

   3,项目工程里面配置bean:

    

<bean id="aliyunOpenSearch" class="***.aliyun.client.opensearch.OpenSearchImpl" scope="prototype">
  <property name="accessKeyId" value="${opensearch.accessKeyId}" />
  <property name="accessKeySecret" value="${opensearch.accessKeySecret}" />
  <property name="endpoint" value="${opensearch.endpoint}" />
 </bean>

三,具体使用:

    1,查询

 //开启opensearch服务
    ISearch search = SpringContextHolder.getBean("aliyunOpenSearch");

   // 设置实例名称
   search.addIndex("aaa");

   // 设置数据格式 
   search.setFormat("json");

   //请求参数拼接
   StringBuffer sb = new StringBuffer();
   sb.append("name:'").append(name).append("'AND age:'").append(age).append("'");

   //查询
   search.setQueryString(s);
   SearchResult result = search.search();                                                    不带分页查询
   SearchPageResult resultForPage = search.search(pageNo, pageSize);                           分页查询

    2,结果解析

   String content = result.getContent();

   content 的格式是之前定义过的json格式,其结构如下:

{"status":"",
 "request_id":"",
 "result":{"searchtime":,
              "total":,
              "num":,
              "viewtotal":,
              "items":[],
              "facet":[]        
             },
"errors":[],
"tracer":""
}

    我们需要的对象在  "items":[]里

   3,使用json相关的解析类(如:Gson,fastjson)把内容解析出来就OK了

猜你喜欢

转载自a-john.iteye.com/blog/2309739