阿里云开放搜索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了