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