Solr 导入数据

本文介绍如何使用Solr从Oracle数据库中导入数据,包括配置DataImportHandler、设置data-config.xml及schema.xml等步骤。

1.采用oracle数据库为数据源

新建SYS_USER


插入测试数据


2.打开solr home\collection1\conf\solrconfig.xml;
增加如下节点:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
        <str name="config">data-config.xml</str>
    </lst>
</requestHandler>

在solrconfig.xml同级目录下新建data-config.xml;
如下:
<dataConfig>
    <dataSource type="JdbcDataSource" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:ORCL" user="test" password="test" />
    
    <document>
        <entity name="import_data" query="select ID,NAME,PASSWORD,USBKEY,STATUS,REGDATE,SORT from SYS_USER">
            <field column="ID" name="id"/>
            <field column="NAME" name="name"/>
            <field column="PASSWORD" name="passwrod"/>
            <field column="USBKEY" name="usbkey"/>
            <field column="STATUS" name="status"/>
            <field column="REGDATE" name="regdate" dateTimeFormat='yyyy-MM-dd HH:mm:ss'/>
            <field column="SORT" name="sort"/>
        </entity>
    </document>
</dataConfig>

3.复制solr-dataimporthandler-4.7.2.jar、solr-dataimporthandler-extras-4.7.2.jar、ojdbc14.jar到tomcat\webapps\solr\WEB-INF\lib下;

4.打开solr home中的schema.xml,添加如下:
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="name" type="string" indexed="true" stored="true" multiValued="false" />
<field name="password" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="usbkey" type="textComplex" indexed="true" stored="true" multiValued="false"/>
<field name="status" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="regdate" type="date" indexed="true" stored="true" multiValued="false"/>
<field name="sort" type="int" indexed="true" stored="true" multiValued="false" />

注:field字段含义
name:标识名称;
type:先前定义的类型;
indexed:是否被用来建立索引(关系到搜索和排序);
stored:是否储存;
required:载入solr的每条记录必须为这个字段提供值;
mutiValued:是否包含多个值;

5.测试


<think>我们正在回答用户关于Solr数据导入配置方法及步骤的问题。根据引用内容,我们知道Solr主要通过DataImportHandler(DIH)来实现数据导入,而DataImportScheduler插件用于定时自动执行导入。用户要求的是配置方法及步骤,因此我们将重点放在DIH的配置上,并简要提及调度器的使用。 步骤通常包括: 1. 配置solrconfig.xml以启用DataImportHandler 2. 创建并配置data-config.xml文件,定义数据源和导入逻辑 3. 配置schema.xml(或使用托管模式)以确保字段匹配 4. (可选)配置DataImportScheduler插件实现定时导入 我们根据引用[4]和[5]中的示例来展示配置细节。 注意:Solr的版本差异可能导致配置略有不同,我们将以Solr 7.4为主,同时兼顾6.x版本(如引用[2]中提到的兼容性建议)。 开始逐步回答:</think>### Solr 数据导入配置方法及步骤 Solr 通过 **DataImportHandler (DIH)** 实现数据导入功能,支持从数据库、文件系统等数据导入数据。以下是详细配置步骤: --- #### 一、启用 DataImportHandler 1. **修改 `solrconfig.xml`** 在 `<config>` 标签内添加以下配置,启用 DIH 组件: ```xml <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> <!-- 指定数据源配置文件 --> </lst> </requestHandler> ``` [^3] --- #### 二、配置数据源 (`data-config.xml`) 1. **创建 `data-config.xml` 文件** 在 Solr Core 的 `conf` 目录下创建此文件,配置数据源和实体映射: ```xml <dataConfig> <!-- 配置数据库连接 --> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/db_name" user="root" password="123456"/> <!-- 定义数据实体 --> <document> <entity name="product" query="SELECT id, name, price, description FROM products"> <!-- 查询语句 --> <!-- 字段映射:数据库列 → Solr字段 --> <field column="id" name="product_id" /> <field column="name" name="product_name" /> <field column="price" name="product_price" /> <field column="description" name="product_desc" /> </entity> </document> </dataConfig> ``` [^4][^5] 2. **关键参数说明**: - `dataSource`:定义数据库类型、驱动、连接信息。 - `entity`:映射数据库表或查询结果。 - `field`:`column` 为数据库列名,`name` 为 Solr 字段名。 --- #### 三、配置字段映射 (`schema.xml`) 确保 `schema.xml` 中的字段与 `data-config.xml` 的映射一致: ```xml <field name="product_id" type="string" indexed="true" stored="true" /> <field name="product_name" type="text_smartcn" indexed="true" stored="true" /> <field name="product_price" type="float" indexed="true" stored="true" /> <field name="product_desc" type="text_smartcn" indexed="true" stored="true" /> ``` > **注意**:若使用中文分词(如 `text_smartcn`),需提前配置分词器[^5]。 --- #### 四、执行数据导入 1. **手动触发导入** 通过 HTTP 请求执行: ```bash curl http://localhost:8983/solr/<core_name>/dataimport?command=full-import ``` - `command=full-import`:全量导入 - `command=delta-import`:增量导入(需额外配置增量策略) 2. **自动定时导入(可选)** 使用 **DataImport Scheduler 插件**: - 将插件 JAR 包放入 Solr 的 `lib` 目录。 - 在 `solrconfig.xml` 中添加定时任务配置: ```xml <listener event="newSearcher" class="org.apache.solr.handler.dataimport.scheduler.DataImportSchedulerListener"> <str name="interval">300</str> <!-- 每 300 秒执行一次 --> </listener> ``` [^1][^2] --- #### 五、验证与调试 1. **检查导入状态**: ```bash curl http://localhost:8983/solr/<core_name>/dataimport?command=status ``` 2. **查看日志**: 在 Solr 日志文件(如 `solr.log`)中搜索 `DataImport` 关键词,定位错误信息[^2]。 --- ### 常见问题处理 - **驱动缺失**:将数据库驱动 JAR(如 `mysql-connector-java.jar`)放入 Solr 的 `lib` 目录。 - **字段类型不匹配**:确保 `schema.xml` 中的字段类型与数据数据类型兼容。 - **增量导入配置**:需在 `data-config.xml` 中定义 `deltaQuery` 和 `deltaImportQuery`[^3]。 --- ### 版本兼容性建议 - **Solr 7.4+**:直接使用内置 DIH 组件。 - **Solr 6.x**:需额外安装 `solr-dataimporthandler` 扩展包[^2]。 通过以上步骤,即可完成 Solr 数据导入的配置与自动化[^1][^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值