业务中为了支持会员和订单数据的复杂字段查询,提高查询效率,采用了分库分表存储+solr查询的策略。
把数据放在RDS中的同时也放在solr上,在solr上查询到满足条件的记录之后,再根据主键去rds中查fullonfo返回给客户端。这个策略,减轻rds的查询负担,solr可以支持各种复杂条件的查询。
solr的安装:apache官网下载solr安装文件,上传到服务器解压。solr是内置了jetty可以直接启动的,不需要一定要放到tomcat下面。
配置文件放到zookeeper上使用脚本 cd /data/project/solr/solr-5.5.4/server/scripts/cloud-scripts
执行 ./zkcli.sh -zkhost zoo1.XXX.com:30004,zoo2.XXX.com:30004/solrs/crm_trade -cmd upconfig -confdir /data/project/solr/solr-5.5.4/solrHome/solr/trade_collection/conf -confname trade_collection
其中solrHome/solr/trade_collection/conf 目录下把你的managed-schema文件和solrcofig.xml放在这里,就会被上传到zookeeper了,使用的时候就去zookeeper上取。
这样就创建了一个名字叫trade_collection的collection
启动solr:到solr的bin目录下 cd /data/project/solr/solr-5.5.4
执行 ./bin/solr start -m 8g -cloud -p 30001 -z zoo1.XXX.com:30004,zoo2.XXX.com:30004/solrs/crm_trade -s solrHome/solr
其中solrHome/solr是我们自定义的solrhome
这样solr环境就搭建好了。
调用的时候:
MyCloudSolrServer solrServer = new MyCloudSolrServer("zoo1.XXX.com:30004,zoo2.XXX.com:30004/solrs/crm_trade", "trade_collection")
solr服务就可以使用了。
另外几个概念,一个solr是可以建多个solrcore的,在solrhome下面建多个文件夹区分开就可以。
collection是一个索引集合
shard分片,solr保存数据