Solr DataImportHandler 配置
2015-08-20 20:57
435 查看
DIH主要用于从数据库抓取数据并创建索引。另外还可以从HTTP(RSS、ATOM)拉数据。
相关概念:
Datasource:数据源,包括获取数据必需的信息:数据位置(url)、数据库driver、登录账号和密码
Entity:相当于数据库的一个视图,可以从一个表或联表查询获得
Processor:数据处理器,负责从数据源中获取数据、处理、然后加入到索引中
Transformer:数据转换器,可选,负责修改数据、创建新的field、或根据需要把一条记录变成多条记录
首先,链接数据库需要mysql connector:
下载地址:http://mvnrepository.com/,搜索:mysql
connector java
点击最新版本号,点击“Download ( JAR ) ”下载,或(更方便的方法)复制链接地址,然后用wget下载:
cd /opt/app/solr/server/solr-webapp/webapp/WEB-INF/lib/
wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.36/mysql-connector-java-5.1.36.jar
配置:
solrconfig.xml中添加 requestHandler,例如:
config参数指定DIH配置文件的位置。DIH配置文件负责指定数据源、拉取和处理数据的方法。
solrconfig.xml
中添加DIH jar包依赖:
DIH配置文件:
根节点:<dataConfig>
dataSource
type: 数据源类型,如:JdbcDataSource(缺省值),采用SqlEntityProcessor
driver: 数据库驱动,如:com.mysql.jdbc.Driver
convertType:
url: 数据库url
user: 你懂的
password: 你懂的
document
entity
name: 随便起的一个标志,可以给嵌套的entity使用,比如${item.id}(假设name="item")
query: 拉取所有数据的语句
deltaQuery: 拉取delta数据的语句,如:deltaQuery="select * from xxx where last_modified > '${dataimporter.last_index_time}'"
field: 指定 dataSource 的 field 和 solr 的field的对应关系,如:<field name="NAME" column="name" />
entity: 嵌套的entity,定义一些一对多的数据。可以使用父entity的name作为条件,比如:where item_id='${item.id}'
transformer: 指定transformer对象,多个的话用逗号分开
配置文件例子(文件名:db-data-config.xml):
需要和另外一个配置文件配合使用:schema.xml,定义了field和fieldType,参考:/article/2598127.html
例子:
通过HTTP请求(POST或GET)执行各种DIH操作:
请求格式:http://<host>:<port>/ solr/ <collect ion_name>/ dataimport? command=<command>
其中,各种<command>如下:
abort:停止当前正在进行的操作
delta-import:调用deltaQuery拉取数据。可以带上几个额外的参数:&clean=true&commit=true等等(和full_import相同)
full-import:调用query拉取所有数据。请求会马上返回,后台有新线程执行重建索引的操作。可以通过status操作查询状态。额外参数:
clean:缺省为true。是否在开始重建索引前清除旧索引
commit:缺省为true。是否提交操作请求
debug:缺省为false。debug模式,不会commit操作。如果同时需要commit,得带上commit=true参数
entity:缺省为所有的entity。可以指定某一个或多个entity
optimize:缺省为true。是否需要在完成操作后优化索引
reload-config:如果修改了配置文件,执行这个命令使它生效
status:返回各种统计数据、以及DIH的当前状态
(原创文章,转载请注明转自Clement-Xu的博客)
相关概念:
Datasource:数据源,包括获取数据必需的信息:数据位置(url)、数据库driver、登录账号和密码
Entity:相当于数据库的一个视图,可以从一个表或联表查询获得
Processor:数据处理器,负责从数据源中获取数据、处理、然后加入到索引中
Transformer:数据转换器,可选,负责修改数据、创建新的field、或根据需要把一条记录变成多条记录
首先,链接数据库需要mysql connector:
下载地址:http://mvnrepository.com/,搜索:mysql
connector java
点击最新版本号,点击“Download ( JAR ) ”下载,或(更方便的方法)复制链接地址,然后用wget下载:
cd /opt/app/solr/server/solr-webapp/webapp/WEB-INF/lib/
wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.36/mysql-connector-java-5.1.36.jar
配置:
solrconfig.xml中添加 requestHandler,例如:
<requestHandler name="/dataimport" class="solr.DataImportHandler"> <lst name="defaults"> <str name="config">db-data-config.xml</str> </lst> </requestHandler>
config参数指定DIH配置文件的位置。DIH配置文件负责指定数据源、拉取和处理数据的方法。
solrconfig.xml
中添加DIH jar包依赖:
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
DIH配置文件:
根节点:<dataConfig>
dataSource
type: 数据源类型,如:JdbcDataSource(缺省值),采用SqlEntityProcessor
driver: 数据库驱动,如:com.mysql.jdbc.Driver
convertType:
url: 数据库url
user: 你懂的
password: 你懂的
document
entity
name: 随便起的一个标志,可以给嵌套的entity使用,比如${item.id}(假设name="item")
query: 拉取所有数据的语句
deltaQuery: 拉取delta数据的语句,如:deltaQuery="select * from xxx where last_modified > '${dataimporter.last_index_time}'"
field: 指定 dataSource 的 field 和 solr 的field的对应关系,如:<field name="NAME" column="name" />
entity: 嵌套的entity,定义一些一对多的数据。可以使用父entity的name作为条件,比如:where item_id='${item.id}'
transformer: 指定transformer对象,多个的话用逗号分开
配置文件例子(文件名:db-data-config.xml):
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" convertType="true" url="jdbc:mysql://127.0.0.1:3306/db_name" user="sa" password="123456"/> <document> <entity name="course_video" query="SELECT id, title, content, tags FROM ts_course_video" > </entity> </document> </dataConfig>
需要和另外一个配置文件配合使用:schema.xml,定义了field和fieldType,参考:/article/2598127.html
例子:
<?xml version="1.0" encoding="UTF-8" ?> <schema name="course_video" version="1.5"> <field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" /> <field name="_version_" type="long" indexed="true" stored="true"/> <field name="title" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="tags" type="string" indexed="true" stored="false" required="false" multiValued="false" /> <field name="content" type="string" indexed="true" stored="true" required="false" multiValued="false" /> <field name="info_text" type="text_general" indexed="true" stored="false" multiValued="true" /> <copyField source="title" dest="info_text" /> <copyField source="content" dest="info_text" /> <copyField source="tags" dest="info_text" /> <uniqueKey>id</uniqueKey> <fieldType name="string" class="solr.StrField" sortMissingLast="true" /> <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> </schema>
通过HTTP请求(POST或GET)执行各种DIH操作:
请求格式:http://<host>:<port>/ solr/ <collect ion_name>/ dataimport? command=<command>
其中,各种<command>如下:
abort:停止当前正在进行的操作
delta-import:调用deltaQuery拉取数据。可以带上几个额外的参数:&clean=true&commit=true等等(和full_import相同)
full-import:调用query拉取所有数据。请求会马上返回,后台有新线程执行重建索引的操作。可以通过status操作查询状态。额外参数:
clean:缺省为true。是否在开始重建索引前清除旧索引
commit:缺省为true。是否提交操作请求
debug:缺省为false。debug模式,不会commit操作。如果同时需要commit,得带上commit=true参数
entity:缺省为所有的entity。可以指定某一个或多个entity
optimize:缺省为true。是否需要在完成操作后优化索引
reload-config:如果修改了配置文件,执行这个命令使它生效
status:返回各种统计数据、以及DIH的当前状态
(原创文章,转载请注明转自Clement-Xu的博客)
相关文章推荐
- hdu 4300 Clairewd’s message
- error: Refusing toundefine while domain managed save image exists
- Light oj 1138 - Trailing Zeroes (III) 【二分查找好题】【 给出N!末尾有连续的Q个0,让你求最小的N】
- HDU 5414 CRB and String (2015 Multi-University Training Contest 10 2015多校联合)
- hdu 5414 CRB and String(2015 Multi-University Training Contest 10)
- 2012 Multi-University Training Contest 5 Problem G The Beautiful Road(HDU4346)
- 2012 Multi-University Training Contest 5 Problem F Permutation(HDU4345)
- hdu 5416 CRB and Tree(2015 Multi-University Training Contest 10)
- [已解决]SSH远程登录失败,提示“Password authentication failed”
- Traits
- ireport detail换行问题
- 虚拟化--061 vsphere webclient sdk - SSL certificate verification failed.
- 科学世界的人文关怀:开源科学与人工智能
- 虚拟化--054 vsphere 报错 Failed to connect to VMware Lookup Service
- UVA 529 Addition Chains
- capturing self strongly in this block is likely to lead to a retain cycle
- UVA - 514 Rails
- Keil调试STM32中解析main开始前的工作
- ACboy needs your help again!--hdu1702
- Train Problem I--hdu1022(栈)