solr java 全量,Solr实时创建增量或全量索引
1,为了支持增量建索引,我们需要把上述文中的mysql-data-config.xml内容改为
query="SELECT id, title, content FROM article"
deltaImportQuery="SELECT id, title, content FROM article
WHERE id='${dataimporter.delta.id}'"
deltaQuery="SELECT id FROM article
WHERE update_time > '${dataimporter.last_index_time}'">
2,我们在上述文中最后Execute时,使用firebug或其他调试插件拿到真实请求的地址(去掉了一些无用参数):
增量建索引链接
http://localhost:8983/solr/collection1/dataimport?command=delta-import&clean=false&commit=true&entity=article&optimize=false
全量建索引链接
http://localhost:8983/solr/collection1/dataimport?command=full-import&clean=true&commit=true&optimize=true
3,有了地址不难总结出solrj调用方法:
import org.apache.log4j.Logger;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import base.util.ConfigUtil;
public class SolrService {
private static Logger log = Logger.getLogger(SolrService.class);
private static HttpSolrServer solrServer;
static {
solrServer = new HttpSolrServer(ConfigUtil.getValue("solr.url"));
solrServer.setConnectionTimeout(5000);
}
/**
* 增量/全量建立索引 。
*
* @param delta ture,增量建立索引;false,重建所有索引
*/
public static void buildIndex(boolean delta) {
SolrQuery query = new SolrQuery();
// 指定RequestHandler,默认使用/select
query.setRequestHandler("/dataimport");
String command = delta ? "delta-import" : "full-import";
String clean = delta ? "false" : "true";
String optimize = delta ? "false" : "true";
query.setParam("command", command)
.setParam("clean", clean)
.setParam("commit", "true")
.setParam("entity", "article")
.setParam("optimize", optimize);
try {
solrServer.query(query);
} catch (SolrServerException e) {
log.error("建立索引时遇到错误,delta:" + delta, e);
}
}
}
4,然后在你需要的位置,如文章发布、修改后删除等候调用即可。
其实这个方法不用SolrJ的对像,用httpclient甚至java.net.URL都可以,只要能访问url就行。
相关说明:
主要原理:是利用率每次我们进行import的时候在solr.home的conf下面生成的dataimport.properties文件,此文件里面有最近一次导入的相关信息,如:
我的文件位置为
/root/solr-4.5.1/example/solr/collection1/conf
我的文件内容为
#Mon Dec 09 14:06:03 CST 2013
last_index_time=2013-12-09 14\:06\:00
article.last_index_time=2013-12-09 14\:06\:00
last_index_time是最近一次增量或全量索引的时间,通过比较这个时间和我们数据库表中的update_time列即可得出哪些是之后修改或者添加的。
data-config.xml说明:
query是获取全部数据的SQL
deltaImportQuery是获取增量数据时使用的SQL
deltaQuery是获取主键的SQL
参数说明:
clean:设置建索引前是否删除之前的索引;
commit:设置建索引后是否自动提交;
entity:mysql-data-config.xml entity name中配置的名称,如果配有多个,且这里不指定,所有entity都会被执行;
optimize:设置建索引后是否自动优化。
solr java 全量,Solr实时创建增量或全量索引相关推荐
- solr java 全量,Java程序员必看:Solr vip竞价排名
功能介绍 本文将使用solr完成vip等级排名,这里并不是简单的按照vip等级排序.而是在使用solr条件查询(不使用排 序)的时候将符合条件并且具有vip等级的数据显示在前面,这个时候咱们就要使用s ...
- Solr与MongoDB集成,实时增量索引[转]
http://www.123905.com/ 一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中 ...
- Solr 4.x定时、实时增量索引 - 修改、删除和新增索引
2019独角兽企业重金招聘Python工程师标准>>> 一.开始增量索引前的准备工作. 1.认识data-config.xml中相关属性 <!-- transformer 格式 ...
- solr java浏览器访问_solr解决访问安全
Tomcat7,solr3.6,mmseg1.8 1:环境的搭建 1:解压tomcat,solr,mmseg4j 2:复制dist文件夹下apache-solr.war到tomcat的webapp文件 ...
- solr java api_Solr7.4.0的API(Solrj)操作
一.SolrJ的概念 是一个API,它使用Java(或任何基于JVM的语言)编写的应用程序可以轻松地与Solr交谈.SolrJ隐藏了许多连接到Solr的细节,并允许您的应用程序通过简单的高级方法与So ...
- hive增量表和全量表_你真的了解全量表,增量表及拉链表吗?
1 Mysql数据准备 第一天 9月10号数据 1,待支付,2020-09-10 12:20:11,2020-09-10 12:20:112,待支付,2020-09-10 14:20:11,2020- ...
- solr java 客户端_Solr JAVA客户端SolrJ的使用
一.Solrj简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.SolrJ针对 Solr提供了Rest 的HTTP接口进行了封装, SolrJ底 ...
- kylin cube 增量和全量
2019独角兽企业重金招聘Python工程师标准>>> 全量构建与增量构建 全量构建 对数据模型中没有指定分割时间列信息的Cube,Kylin会采用全量构建,即每次从Hive中读取全 ...
- Apache Solr Java 企业级搜索引擎
Apache Solr,Solr 是基于 Lucene 的全文搜索服务器,也是最流行的企业级搜索引擎,其主要功能包括全文检索.命中高亮.分面搜索.动态聚类.数据库集成,以及对富文本(如 Word.PD ...
最新文章
- ●BZOJ 2669 [cqoi2012]局部极小值
- Jquery 添听checkbox 是否选中
- 从0搭建一个Springboot+vue前后端分离项目(四)利用Element框架搭建页面主体部分表格与侧边栏
- Unet项目解析(3): run_testing.py
- linux 4.4内核是什么,Linux 内核 4.4 LTS 将于2016年1月10日发布
- fatal: unable to access 'xxxxxxxxxxxxx':The requested URL returned error: 403
- BitNami一键安装Redmine
- mvc 视图和模型的对应_通过在酒吧订购饮料来解释模型视图控制器(MVC)
- UVA-714 二分
- Spring Boot自动化配置的利弊及解决之道
- Java 18 正式发布,默认 UTF-8,finalize 被弃用,别再乱用了!
- python-函数的注释
- 图解 Go 切片的深拷贝和浅拷贝
- iPhone 九、十月份在中国销量曝光:真的卖疯了!
- android编译的tool版本有多少,android gradle tool版本从3.3升级到3.6.3问题记录
- python neo4j_在Python中使用Neo4j的方法
- 数据统计并制作韦恩图
- PN learning
- Vagrant 入门 - 同步目录(synced folders)
- 基于不同策略的英文单词的词频统计和检索系统(C++)
热门文章
- 为什么我们需要给 Angular library 创建多重入口 multiple entry point
- 关于 HTTP 和 TCP 的 keep-alive
- Angular应用里具有back功能的按钮实现
- 使用WebIDE开发Android应用
- how is batch operation handled in backend
- hybris使用impEx导入产品主数据的示例脚本
- when is SAP UI5 url hash changed in browser
- windows10大瘦身 - Chrome文件夹下可以删除的临时js文件
- coach和mentor,教练和导师的区别
- 如何使用Marketing Cloud的扩展字段作为搜索条件进行搜索