Search服务支持多语言访问,并且完全兼容开源Apache Solr API,本篇主要介绍如何使用Solr Java API访问Search服务。
背景信息
1、获取集群连接地址
在Search实例控制台,点击进入数据库连接
后,查看客户端访问地址
,参见下图
注意:此处的外网地址暂时不支持访问,如果需要外网访问Search服务,可钉钉联系云HBase答疑。
2、配置客户端SDK依赖Search服务完全兼容开源Solr协议,可直接依赖开源客户端版本。
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>7.7.3</version>
</dependency>
3、代码示例
下面给出一个简单的代码样例:首先通过查询索引获取id
,再转换为HBase表的rowkey
,最后通过查询HBase取出最终完整原数据。
-
3.1 查询索引
/** //公网访问时,本地调试采用HttpSolrClient模式 //前提:通过控制台"访问控制"添加本机IP到白名单 String httpUrl = "http://***:8983/solr/" HttpSolrClient solrClient = new HttpSolrClient.Builder(httpUrl).build(); **/ // 内网访问采用CloudSolrClient模式 String zkHost = "ld-****-m1-se-proxy-zk.hbaseue.rds.aliyuncs.com:2181/solr"; CloudSolrClient solrClient = new CloudSolrClient.Builder(Collections.singletonList(zkHost), Optional.empty()).build(); //CloudSolrClient是线程安全的,应用多线程可以共享一个对象 SolrQuery solrQuery = new SolrQuery("name_s:bobo AND age_i:18"); QueryResponse response = solrClient.query("your_index_name", solrQuery); SolrDocumentList documentList = response.getResults(); long hitCount = documentList.getNumFound(); // 查询条件命中的数据条数 for(SolrDocument doc : documentList) { // 查询条件命中的结果 String id = (String)doc.getFieldValue("id"); //do something } solrClient.close();
更多样例代码,参考
-
3.2 id转换成rowkey
默认的id为String类型,id转成rowkey过程如下:
// String id = "xxxx"; org.apache.hadoop.hbase.util.Bytes.toBytes(docId)
-
3.3 获取最终数据
拿到匹配条件的rowkey后,只要进行HBase的get操作即可。可以通过Java API原生方式,详见参考,也可以通过thrift支持c#、python、go等多语言, 详见参考。
在文档使用中是否遇到以下问题
更多建议
匿名提交