生成Solr增量索引配置xml
主要是解决在Solr 配置增量索引的时候,如果数据库做了分表比如分了128张,那在配置Solr的data-config.xml的时候会很浪费时间,刚开始我也用dom4生成过,但总是感觉格式有问题,特别是entity的属性的时候deltaImportQuery deltaQuery 这些语句很长,想要换行什么的用dom4j支持并不友好,索性干脆自己用StringBuffer 拼接出来拉到!
package com.test;import java.io.File;
import java.io.FileOutputStream;/*** 北极心* 2019-08-04 12:39:03* 生成Solr增量索引配置xml* */
public class SolrMyXML {//solr节点配置private final static String documentName="docEvspgoods";private final static String name="evspgoods";//这个很有必要,因为其中的增量索引查询主键ID时需要 private final static String pkid="id";// query查询是指 查询出表里所有的符合条件的数据,因为笔者测试的有删除业务,所以 where 后面有一个限定条件 意思为查询未被删除的数据 (注意这个query查询只对第一次全量导入有作用,对增量导入不起作用)private final static String query ="SELECT id,goods_code,goods_name,CREATED_TIME from evsp_goods%s where audit_status=1 and is_sale=1";//次查询是获取以上两步的ID,然后把其全部数据获取,根据获取的数据 对索引库进行更新操作,可能是删除,添加,修改 (此查询只对增量导入起作用,可以返回多个字段的值,一般情况下,都是返回所有字段的列)private final static String deltaImportQuery ="select id,goods_code,goods_name,CREATED_TIME from evsp_goods%s where audit_status=1 and is_sale=1 and id='${dih.delta.id}'";//deltaQuery的意思是,查询出所有经过修改的记录的ID 可能是修改操作,添加操作,删除操作产生的 (此查询只对增量导入起作用,而且只能返回ID值)private final static String deltaQuery ="select id from evsp_goods%s where audit_status=1 and is_sale=1 and CREATED_TIME>'${dataimporter.last_index_time}'";// 此操作值查询那些数据库里伪删除的数据的ID(即isdelete标识为1的数据) solr通过它来删除索引里面对应的数据 (此查询只对增量导入起作用,而且只能返回ID值)private final static String deletedPkQuery ="select id from evsp_goods%s where audit_status=0 and is_sale=0";//这里是分表规则private final static int tablecount=1;//这些常量不要修改private final static String ENTER = "\r\n";private final static String SPACE = " ";private final static String SPACEDOUBLE = " ";private final static String YH = "\"";private final static String H = ">";public static void main(String[] args) {File xmlfile = new File("c://test.xml");new SolrMyXML().createSolrDataConfig(xmlfile);}/*** @param xmlfile*//*** @param xmlfile*/public void createSolrDataConfig(File xmlfile) {try {// 添加根节点StringBuffer xmlstr = new StringBuffer("<document name=").append(YH).append(documentName).append(YH).append(H);// 在根节点下添加第一个子节点for(int i = 0 ;i<tablecount ;i++) {xmlstr.append(ENTER);xmlstr.append(SPACE).append("<entity name=").append(YH).append(name).append(String.valueOf(i)).append(YH).append(ENTER);xmlstr.append(SPACEDOUBLE).append("dataSource=").append(YH).append("JdbcDataSource").append(YH).append(ENTER);//这里是指定数据源,根据自己实际情况定xmlstr.append(SPACEDOUBLE).append("pk=").append(YH).append(pkid).append(YH).append(ENTER);xmlstr.append(SPACEDOUBLE).append("query=").append(YH).append(String.format(query, String.valueOf(i))).append(YH).append(ENTER);xmlstr.append(SPACEDOUBLE).append("deltaImportQuery=").append(YH).append(String.format(deltaImportQuery, String.valueOf(i))).append(YH).append(ENTER);xmlstr.append(SPACEDOUBLE).append("deltaQuery=").append(YH).append(String.format(deltaQuery, String.valueOf(i))).append(YH).append(ENTER);xmlstr.append(SPACEDOUBLE).append("deletedPkQuery=").append(YH).append(String.format(deletedPkQuery, String.valueOf(i))).append(YH).append(H).append(ENTER);String querys = query.toLowerCase();String fieldstr = querys.substring(querys.indexOf("select")+6, querys.lastIndexOf("from"));String[] fields = fieldstr.split(",");for(int k=0;k<fields.length;k++) {xmlstr.append(SPACEDOUBLE);xmlstr.append("<field ");xmlstr.append("column=").append(YH).append(fields[k].replaceAll(" ", "")).append(YH);xmlstr.append(" name=").append(YH).append(fields[k].replaceAll(" ", "")).append(YH);xmlstr.append(" /").append(H).append(ENTER);}xmlstr.append(SPACE);xmlstr.append("</entity>");}xmlstr.append(ENTER);xmlstr.append("</document>");FileOutputStream out = new FileOutputStream(xmlfile);out.write(String.valueOf(xmlstr).getBytes("utf-8"));out.flush();out.close();System.out.println("OK!");} catch (Exception e) {e.printStackTrace();}}
}
转载于:https://my.oschina.net/Thinkeryjgfn/blog/3083231
生成Solr增量索引配置xml相关推荐
- solr4.2增量索引之同步(修改,删除,新增)--转载
原文地址:http://www.jiancool.com/article/12743229775/;jsessionid=14E9B3F1BB33399799884B5C8F15DDE1 solr增 ...
- solr 从数据库导入数据,全量索引和增量索引(实例配置原理)
http://blog.csdn.net/u013378306/article/details/50761610 为防止原文删除特此备份 ------------------------------- ...
- 转:solr 从数据库导入数据,全量索引和增量索引(实例配置原理)
http://blog.csdn.net/u013378306/article/details/50761610 为防止原文删除特此备份 ------------------------------- ...
- solr 从数据库导入数据,全量索引和增量索引
首先说一下是从MySQL数据库导入数据 这里使用的是mysql测试. 1.先在mysql中建一个表:solr_test 2.插入几条测试数据: 3.用记事本打solrconfig.xml文件,在sol ...
- [搜索] Solr (三) 全量索引与增量索引
solr.home D:solr\home solr.war D:solr\server\solr 参考文档 IBM developerWorks 文档库 Apache Solr 的新特性 ...
- 基于Solr DIH实现MySQL表数据全量索引和增量索引
实现MySQL表数据全量索引和增量索引,基于Solr DIH组件实现起来比较简单,只需要重复使用Solr的DIH(Data Import Handler)组件,对data-config.xml进行简单 ...
- solr mysql 增量索引_基于Solr DIH实现MySQL表数据全量索引和增量索引
实现MySQL表数据全量索引和增量索引,基于Solr DIH组件实现起来比较简单,只需要重复使用Solr的DIH(Data Import Handler)组件,对data-config.xml进行简单 ...
- Solr与MongoDB集成,实时增量索引[转]
http://www.123905.com/ 一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中 ...
- Solr 4.x定时、实时增量索引 - 修改、删除和新增索引
2019独角兽企业重金招聘Python工程师标准>>> 一.开始增量索引前的准备工作. 1.认识data-config.xml中相关属性 <!-- transformer 格式 ...
最新文章
- MYSQL explain详解[转载]
- ie8开发人员工具无法使用,按f12任务栏里出现任务,但是窗体不弹出
- grub通过img文件启动linux,Linux GRUB实现双系统引导之菜鸟教程
- MySQL高级 - 锁 - MyISAM表锁 - 小结
- 解决 Gedit 中文乱码
- Swift - 重写导航栏返回按钮
- 网络进阶:用了HTTPS就安全了吗?HTTPS 会被抓包吗?
- mysql 5.1.48-log_mysql5.1+syslog8.3+loganalyzer配置过程
- SpringMVC_跟踪请求
- 网络安全以及常见的网络攻击
- 计算1-1/x+1/x*x
- HTML关闭网页弹出窗口代码
- 国内首款、完全自主、基于云架构的三维CAD平台——CrownCAD(皇冠CAD)
- hash碰撞解决方法
- 【Unity】在Inspector上显示自定义的位掩码枚举(Flags)
- 面子对中国人为什么这么重要
- 千锋逆战班,css注册案例
- 移动支付快速崛起,爱贝赋能行业新发展
- 第4期——华为WLAN产品介绍
- 龙芯中科发布的 《龙芯生态白皮书(2022年)》的.NET 生态章节节选