设为首页 收藏本站
查看: 459|回复: 0

[经验分享] 使用solr从MySQL数据库导入数据并索引

[复制链接]

尚未签到

发表于 2016-10-17 06:42:29 | 显示全部楼层 |阅读模式
 
参考:
 
  wiki: http://wiki.apache.org/solr/
 
跟益达学solr  
跟益达学Solr5之从MySQL数据库导入数据并索引
 
步骤:
 
 
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标签内添加):
<requestHandler name="/dataimport" class="solr.DataImportHandler">  
      <lst name="defaults">  
            <str name="config">solr-data-config.xml</str>  
      </lst>  
</requestHandler> 
10.
    修改core1/conf目录下solr-data-config.xml的内容为(根据本地数据库具体情况配置):
<dataConfig>
    <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" user="root" password="root"/>
    <document>
        <entity name="_user" query="select * from _user">
            <field column="id" name="id" />
            <field column="age" name="age" />
            <field column="username" name="username"/>
            <field column="password" name="password"/>
        </entity>
    </document>
</dataConfig>
11.
    修改core1/conf目录下schema.xml,添加表中的字段定义(如果主键为id,就不需要添加id的field了):
   <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
   
   <field name="age" type="int" indexed="true" stored="true" required="false" multiValued="false" /> 
   <field name="username" type="string" indexed="true" stored="true" required="false" multiValued="false" /> 
   <field name="password" type="string" indexed="true" stored="true" required="false" multiValued="false" /> 
   
   
   
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的结果。
 
    结束。。。
 
 
  java客户端操作solr:参考:http://wiki.apache.org/solr/Solrj
  以及:

SolrJ增删查

 

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<User> items = response.getBeans(User.class);
for (User i : items) {
System.out.println(i);
}
System.out.println(response.getResults());
client.close();
}
}

 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-287092-1-1.html 上篇帖子: 使用DBCP创建MySQL数据库连接池 下篇帖子: 手把手教你如何搭建PHP本地测试环境和MYSQL数据库的建立和使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表