mysql redis solr_使用solr从MySQL数据库导入数据并索引

本文介绍了如何将MySQL数据库中的数据导入到Solr进行索引。首先,详细说明了配置Solr和Jetty的过程,包括版本选择、文件复制和目录结构设置。接着,讲述了配置solrconfig.xml和solr-data-config.xml以连接MySQL数据库和定义字段。在完成配置后,通过启动Jetty服务器并执行全量导入,成功建立索引。最后,展示了如何使用Java代码进行Solr的查询操作。
摘要由CSDN通过智能技术生成

参考:

步骤:

1.

下载并解压solr,jetty,我用的版本是solr-5.3.1,jetty-9.3.6

2.

将solr的server/solr-webapp/webapp文件夹复制到jetty的webapps目录下,并将文件夹名字webapp改名为solr, 同时将server\lib\ext目录下的所有jar包复制到jetty的lib\ext目录下

3.

jetty根目录下新建一个文件夹solr

4.

复制solr的server\solr目录下的solr.xml文件至jetty的solr目录下

5.

在jetty的solr目录下创建core1文件夹

6.

复制solr的example\example-DIH\solr\solr目录下的全部文件(core.properties文件和conf文件夹)到jetty的solr/core1目录下

7.

复制solr的dist目录下的solr-dataimporthandler-5.3.1.jar复制到jetty的webapps\solr\WEB-INF\lib目录下

8.

复制数据库jdbc驱动jar(例如mysql的mysql-connector-java-5.1.6.jar)到jetty的webapps\solr\WEB-INF\lib目录下

9.

在solr的core1/conf目录下的solrconfig.xml文件中添加内容(在config标签内添加):

solr-data-config.xml

10.

修改core1/conf目录下solr-data-config.xml的内容为(根据本地数据库具体情况配置):

11.

修改core1/conf目录下schema.xml,添加表中的字段定义(如果主键为id,就不需要添加id的field了):

12.

启动jetty:在jetty目录下,执行命令:java -jar start.jar即可

13.

打开http://localhost:8080/solr/

在左侧,core selector下拉框中选中core1,点击Dataimport,可以看到Command有full-import和delta-import两种(具体区别可自行搜索),第一次可以选full-import,Entity下拉框面选_user,选中“Auto-Refresh Status”,点击Execute,

可以看到右边状态:Indexing,最后变为Indexing completed表示索引已经建好了。

然后点击左侧的Query,在q下面的输入框中输入:password:aaa,点击Execute Query来从索引中查询password为aaa的结果。

结束。。。

以及:

package com.tch.test.solr.test;

import java.io.IOException;

import java.util.List;

import org.apache.solr.client.solrj.SolrQuery;

import org.apache.solr.client.solrj.SolrServerException;

import org.apache.solr.client.solrj.impl.HttpSolrClient;

import org.apache.solr.client.solrj.impl.XMLResponseParser;

import org.apache.solr.client.solrj.response.QueryResponse;

import com.tch.test.solr.entity.User;

public class TestSolr {

public static void main(String[] args) throws IOException, SolrServerException {

String url = "http://localhost:8080/solr/core1";

HttpSolrClient client = new HttpSolrClient(url);

client.setConnectionTimeout(5000);

client.setParser(new XMLResponseParser()); // binary parser is used by default

client.setSoTimeout(1000); // socket read timeout

client.setDefaultMaxConnectionsPerHost(100);

client.setMaxTotalConnections(100);

client.setFollowRedirects(false); // defaults to false

client.setAllowCompression(true);

//删除操作

//client.deleteByQuery("*:*");

//插入

User item = new User();

item.setId("111");

item.setAge(25);

item.setIsCoverImage(1);

item.setUsername("username-1");

item.setPassword("password-1");

client.addBean(item);

User item_cn = new User();

item_cn.setId("222");

item_cn.setAge(26);

item_cn.setIsCoverImage(0);

item_cn.setUsername("中文");

item_cn.setPassword("password-2");

client.addBean(item_cn);

// commit

client.commit();

//查询

SolrQuery query = new SolrQuery();

query.setQuery("*:*");

//分页

query.setStart(10);

query.setRows(20);

//query.addSort(new SortClause("id", ORDER.desc));//结果排序

QueryResponse response = client.query(query);

List items = response.getBeans(User.class);

for (User i : items) {

System.out.println(i);

}

System.out.println(response.getResults());

client.close();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值