DIH 之 SQL Entity Processor

该 Processor 用于处理 Jdbc 数据源,其属性如下所示:
query:
必须的,用于查询行的 SQL 语句
deltaQuery:
该语句在执行 delta-import 时生效,这个查询将选择行的主键,这些主键可以通过 ${dataimporter.delta.<column-name>} 变量生效
parentDeltaQuery:
该语句在执行 delta-import 时生效
deletedPkQuery:
该语句在执行 delta-import 时生效
deltaImportQuery:
该语句在执行 delta-import 时生效。

DIH 之 Entity Processors

Entity processors 负责抽取数据,然后发送给 Solr 索引。例子中的 实体包括视图和表中的数据。
以下是 Entity processors 中常用的属性:
datasource:
指定数据源的名称,当有多个数据源时,需要该名称来决定使用哪个数据源
name:
必选,指定实体唯一的名称
pk:
实体的主键,只有到使用delta-imports是,它的值才是必须。
processor:
默认是 SQLEntityProcessor,如果数据源不是关系型数据库,该值必填
onError:
容错值,可选有:abort|skip|continue,默认为 abort。 skip 是跳过当前document,continue 是忽略错误继续执行。
preImportDeleteQuery:
在执行 full-import 之前的删除语句
postImportDeleteQuery:
在 full-import 完成后执行的语句

DIH 之 URLDataSource

这个数据源经常使用 XPathEntityProcessor 来从 file:// 或 http:// 位置来获取内容。

public class URLDataSource extends DataSource&lt;Reader&gt;

这里是一个例子:

&lt;dataSource name=&quot;a&quot;<br />
type=&quot;URLDataSource&quot;<br />
baseUrl=&quot;http://host:port/&quot;<br />
encoding=&quot;UTF-8&quot;<br />
connectionTimeout=&quot;5000&quot;<br />
readTimeout=&quot;10000&quot;/&gt;

这个 URLDataSource 接受以下可选参数:
baseURL:
数据源地址
connectionTimeout:
连接超时,默认值是 5 秒
encoding:
编码
readTimeout:
读取超时,默认值是 10 秒

DIH 之 FileDataSource 数据源

该数据源使用起来跟 URLDataSource 类似,但是这个数据源主要是从磁盘的文件中获取内容。和 URLDataSource 唯一不同的是,访问磁盘文件时需要制定磁盘路径,如下所示:

public class FileDataSource extends DataSource&lt;Reader&gt;

这个数据源接受两个可选参数:
basePath:
用于指定绝对路径前缀
encoding:
文件字符集

DIH 之 FieldReaderDataSource 数据源

当一个数据库字段包含 XML 内容,打算通过 XpathEntityProcessor 来读取内容时,可以像以下
配置那样,设置一个数据源,同时包含
JDBC 和 FieldReader 两个实体:
&lt;dataSource name = &quot;a1&quot; driver=&quot;org.hsqldb.jdbcDriver&quot; /&gt;<br />
&lt;dataSource name=&quot;a2&quot; type=FieldReaderDataSource&quot; /&gt;<br />
&lt;!-- processor for database --&gt;<br />
&lt;entity name =&quot;e1&quot; dataSource=&quot;a1&quot; processor=&quot;SQLEntityProcessor&quot; pk=&quot;docid&quot;<br />
	query=&quot;select * from t1 ...&quot;&gt;<br />
	&lt;!-- nested XpathEntity; the field in the parent which is to be used for<br />
	Xpath is set in the 'datafield attribute inplace of the &quot;url&quot; attribute --&gt;<br />
	&lt;entity name=&quot;e2&quot;<br />
		dataSource=&quot;a2&quot;<br />
		processor=&quot;XPathEntityProcessor&quot;<br />
		dataField=&quot;e1.fieldToUseForXPath&quot;<br />
		&lt;!-- Xpath configuration follows --&gt;<br />
		...<br />
	&lt;/entity&gt;<br />
&lt;/entity&gt;

DIH 之 ContentStreamDataSource 数据源

ContentStreamDataSource 数据源是将 POST 提交过来的数据当做数据源,这个数据源可以被任何 EntityProcessor 的 DataSource 使用。

DIH 之数据源

数据源用于指定原始的数据和类型,数据源可以在实体处理类中指定,也可以在 solrconfig.xml 中指定。

可以自定义一个数据源,只要扩展自 org.apache.solr.handler.dataimport.DataSource 即可。
数据源定义中,名称和类型是必填的。
支持的数据源类型包括:
ContentStreamDataSource
FieldReaderDataSource
FileDataSource
JdbcDataSource
URLDataSource

full-import 参数

full-import 接受以下参数:
clean:
默认为true,告诉 Solr 在开始索引前是否情况已有索引
commit:
默认为true,告诉 Solr 操作完成后是否提交
debug:
默认为 false,设置该命令是否在调试模式下执行在,在调试模式下,文档不会自动提交,如果准备提交文档的话,需要带上 commit=true 这个 request 参数
entity:
用于指定配置文件中 <document> 标签下实体的名称,允许一次传多个entity名称,如果没有指定实体名称,所有的实体将被执行
optimize:
操作完成后是否优化索引,默认为true

DIH 命令说明

abort:
中断正在执行的操作,通过访问这个 URL 就能执行这个操作
http://<host>:<port>/solr/dataimport?command=abort.
delta-import:
增量导入,命令URL :http://<host>:<port>/solr/dataimport?command=delta-import
full-import:
全部导入操作可以通过这个URL执行 http://<host>:<port>/solr/dataimport?command=full-import,这个命令会立即返回。这个命令会开启一个新线程,线程属性为 busy。这个命令会执行一段时间,主要看数据量的大小。此时查询依然可以运行。当这个命令开始执行时,会把执行时间保存到 conf/dataimport.properties 中,增量导入时,将导入这个时段以后的数据。
reload-config:
当配置文件改变时,想重现加载配置文件时,可以执行:http://<host>:<port>/solr/dataimport?command=reload-config
status:
URL 是 http://<host>:<port>/solr/dataimport?command=status,返回文档创建、删除和查询等数量的统计

DIH 配置

首先 DIH 需要在 solrconfig.xml 中注册:
&lt;requestHandler name=&quot;/dataimport&quot;<br />
class=&quot;org.apache.solr.handler.dataimport.DataImportHandler&quot;&gt;<br />
&lt;lst name=&quot;defaults&quot;&gt;<br />
&lt;str name=&quot;config&quot;&gt;/path/to/my/DIHconfigfile.xml&lt;/str&gt;<br />
&lt;/lst&gt;<br />
&lt;/requestHandler&gt;

可以有多个的 DIH 配置文件,每个需要单独定义在 solrconfig.xml ,主要是指定配置文件的路径。
DIH 配置文件中指定了数据源,怎样获取数据,以及如何处理这些数据并发送给 Solr 索引库。
在 example/example-DIH 目录下有几个 DIH 配置的示例文件,可以作为配置的参考。

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress · 闽ICP备18020075号