基于Solr DIH实现MySQL表数据全量索引和增量索引

实现MySQL表数据全量索引和增量索引,基于Solr DIH组件实现起来比较简单,只需要重复使用Solr的DIH(Data Import Handler)组件,对data-config.xml进行简单的修改即可。Solr DIH组件的实现类为org.apache.solr.handler.dataimport.DataImportHandler,在Solr的solrconfig.xml中配置两个handler,配置分别说明如下。 全量索引 solrconfig.xml配置如下: <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler> 上面这个是针对全量索引的,主要是配置data-config.xml文件,示例如下所示: <dataConfig> <dataSource name="jdbc" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://172.0.8.249:5606/marketing_db_saved

Solr DIH: 基于MySQL表数据建立索引

选择使用Solr,对数据库中数据进行索引,可以单独写程序将数据库中的数据导出并建立索引,这个过程可能对于数据处理的控制更灵活一些,但是却可能带来很大的工作量。选择使用Solr的DIH组件,可以很方便的对数据库表中数据进行索引,下面基于MySQL数据库实现建立索引。 首先,需要设计你的schema,最主要的工作是,将数据库表中字段映射为Lucene索引(Solr直接使用Lucene的索引格式和数据)的Field,从而将数据表中的一条记录映射为Lucene中的Document,然后进行索引。另外,在schema.xml配置文件中,还需要指定各个字段在索引数据中的属性信息(如是否索引、是否存储、是否分词、排序规则等),以及Field所使用的分析器、过滤器等。在schema.xml文件进行配置,下面是配置实例: <?xml version="1.0" ?> <schema name="example core zero" version="1.1"> <types> <fieldtype name="int" class="solr.IntField" omitNorms="true" /> <fieldtype name="stri

SolrCloud 4.3.1+Tomcat 7安装配置实践

我们使用Solr Replication可以实现Solr服务器的可用性,即使某一个索引副本由于磁盘介质故障或者误操作删除等,其他的多个复制副本仍然可以提供服务。如果只是单纯的基于Solr Replication技术,只能对一个索引进行管理维护,当索引数据达到一定规模,搜索的性能成了瓶颈,除了重新规划设计索引,实现逻辑划分以外,没有更好地方法实现查询服务器的可扩展性。 SolrCloud就是为了解决这个问题而提出的。SolrCloud通过ZooKeeper集群来进行协调,使一个索引(SolrCloud中叫做一个Collection)进行分片,各个分片可以分布在不同的物理节点上,而且,对于同一个Collection的多个分片(Shard)之间没有交集,亦即,多个物理分片组成一个完成的索引Collection。为了保证分片数据的可用性,SolrCloud自动支持Solr Replication,可以同时对分片进行复制,冗余存储。下面,我们基于Solr最新的4.3.1版本进行安装配置SolrCloud集群,通过实践来实现索引数据的分布存储和检索。 准备工作 服务器信息 三台服务器: 10.95.3.61 master 10.95.3.62 slave1 10

Solr实现SQL的查询与统计

Cloudera公司已经推出了基于Hadoop平台的查询统计分析工具Impala,只要熟悉SQL,就可以熟练地使用Impala来执行查询与分析的功能。不过Impala的SQL和关系数据库的SQL还是有一点微妙地不同的。 下面,我们设计一个表,通过该表中的数据,来将SQL查询与统计的语句,使用Solr查询的方式来与SQL查询对应。这个翻译的过程,是非常有趣的,你可以看到Solr一些很不错的功能。 用来示例的表结构设计,如图所示: 下面,我们通过给出一些SQL查询统计语句,然后对应翻译成Solr查询语句,然后对比结果。 查询对比 条件组合查询 SQL查询语句: SELECT log_id,start_time,end_time,prov_id,city_id,area_id,idt_id,cnt,net_type FROM v_i_event WHERE prov_id = 1 AND net_type = 1 AND area_id = 10304 AND time_type = 1 AND time_id >= 20130801 AND time_id <= 20130815 ORDER BY log_id LIMIT 10; 查询结果,如图所示: Solr查询URL: http://slave1:8888/solr-cloud/i_event/select?q=*:*&fl=log_id,start_time,end_time,prov_id,city_id,area_id,id

Solr自动生成ID配置实践

Solr基于Lucene的索引,而索引中的最基本的单元式Document,在Solr中,管理每一个Document(更新、删除、查询),基本都会用到对应的ID,类似关系数据表中的主键。但是,如果我希望Solr能够自动生成这个唯一的ID,有时候也省去了不少的工作,而只需要在Solr中进行配置即可。 下面,通过实例来说明,如何配置Solr支持的UUID。首先,示例的schema.xml对应的表结构,如图所示: 在Solr中配置生成唯一UUID,需要修改两个配置文件: schema.xml schema.xml文件的配置内容,增加如下类型配置: <fieldType name="uuid" class="solr.UUIDField" indexed="true" /> 再增加ID字段的类型,如下所示: <field name="id" type="uuid" indexed="true" stored="true" multiValued="false" required="true" /> 这样还不够,还需要指定在更新索引的时候,使用这个更新策略,即配置一个requestHandler元素。 solrconfig.xml 配置solrconfig.xml文件,修改更新索