Solr 配置DataImport出错的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solr 配置DataImport出错的问题相关的知识,希望对你有一定的参考价值。

HTTP Status 500 - msg=SolrCore 'collection1' is not available due to init failure: severeErrors,trace=org.apache.solr.common.SolrException: SolrCore 'collection1' is not available due to init failure: severeErrors at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:827) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:317) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:217) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: org.apache.solr.common.SolrException: severeErrors at org.apache.solr.core.SolrCore.<init>(SolrCore.java:844) at org.apache.solr.core.SolrCore.<init>(SolrCore.java:630) at org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:562) at org.apache.solr.core.CoreContainer.create(CoreContainer.java:597) at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:258) at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:250) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) ... 3 more Caused by: java.lang.NoSuchFieldError: severeErrors at org.apache.solr.handler.dataimport.DataImportHandler.inform(DataImportHandler.java:121) at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:631) at org.apache.solr.core.SolrCore.<init>(SolrCore.java:835) ... 11 more ,code=500

到底是什么原因啊 求教
solrconfig.xml 如下
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">dataconfig.xml</str>
</lst>
</requestHandler>

可能是jar文件的路径放错了,jar文件不应该放在tomcat下的solr的lib里 而在SolrHome里新建lib文件夹把dataimport相关的Jar放进去即可解决。

配置步骤

1、所需jar包: 可在solr-4.7.0\\dist目录下copy 
1) solr-dataimporthandler-extras-4.7.0.jar; 
2) solr-dataimporthandler-4.7.0.jar; 
3) ojdbc-6.jar;自己下载 
将jar包放在tomcat下的\\webapps\\solr\\WEB-INF\\lib中 

2、修改solr的核心配置 : 
F:\\cjj\\solr\\solr-4.7.0\\solrhome\\collection1\\conf 
之前创建的solrhome下的配置文件中:需要更改3个地方: 
 
2.1)首先是solrconfig.xml文件,添加如下这段配置:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>  123456

指向一个自定义文件:data-config.xml,顾名思义,是配置相关数据源的。

2.2)然后是新建data-config.xml文件,添加如下这段配置:

<?xml version="1.0" encoding="UTF-8" ?>  <dataConfig>
<dataSource driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@192.168.17.184:1521:gisdev" user="gisdev" password="gisdev"/>       <document name="salesDoc">
<entity name="t_map_point"  query="select * from t_map_point   where type ='SALES_DEPT' and isvalid  ='1' " >
<field name="id" column="id" />
<field name="name" column="name" />
<field name="address" column="address" />
<field name="lng_baidu" column="lng_baidu" />
<field name="lat_baidu" column="lat_baidu" />
</entity>
</document></dataConfig>1234567891011121314

2.3)最后的一个文件配置是修改schema.xml文件,添加在data-config中定义的字段,如果已经存在如id,name,则可不用重新添加。 

3、最后一步,全量或者增量导入数据: 
启动tomcat,选择collection1,选择dataimport命令界面: 
我们可以选择是全量导入还是增量导入,并且选择配置好的实体。 
 
实体是我们在data-config.xml中配置的实体,已根据SQL过滤。 
 
点击execute后 

等待一会,刷新一下,可以看到已经执行完毕了。 

这个时候,再返回去看collection1中有什么变化: 

可以看到总数有9068条数据组合成的docs,对应数据库中过滤出的9068的总数,每个实体也按照我们定义好的字段显示出来,是放在docs的索引节点存在的。 

参考技术A solr.xml 发来看下
在dataimport的时候指向的core1名字不正确追问

哥们明天能远程帮我配下吗?

追答

你把这几个问价给我发过来看看好了,solr.xml, solrconfig.xml, dataimport.xml, schema.xml

追问

您邮箱多少啊 我发给你吧

12.solr学习速成之dataimport

solr除了利用solrj建立索引外,还可以由列式数据库hbase触发器添加索引,自动全量或者增量索引关系数据库数据等.
dataimport可以配置从任何关系数据库导入索引

1.将jar包拷贝到tomcat/webapps/solr/web-inf/lib下面

mysql-connector-java-5.1.6.jar
solr-dataimporthandler-5.3.1.jar
solr-dataimporthandler-extras-5.3.1.jar
solr-dataimportscheduler-1.1.jar

2.tomcat/webapps/solr/web-inf/web.xml添加监听

<listener>
    <listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>
</listener>

3.solr_home下建立conf目录,conf目录下建立dataimport.properties文件

syncEnabled=1
syncCores=test
server=192.168.126.205
port=8080
webapp=solr
#增量
params=/dataimport?command=delta-import&clean=false&commit=true
#schedule interval default 30min
interval=1
#重做索引的时间间隔,单位分钟,默认7200就是1天
#为空为0或者注释掉,表示永不重做索引
reBuildIndexInterval=2
#重做索引的参数
reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true
#重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000
#两种格式:2012-04-11 03:10:00或者 03:10:00,后一种会自动补全日期部分为服务启动的日期
reBuildIndexBeginTime=

4.solr_home下对应core下的conf目录下建立data-config.xml文件

<dataConfig>
    <dataSource type="JdbcDataSource"
                driver="com.mysql.jdbc.Driver"
                url="jdbc:mysql://192.168.1.105:3306/test"
                user="root"
                password="root"/>
    <document>
        <entity name="id"
                query="select id,arm,name from user">
        </entity>
    </document>
</dataConfig>

5.solr_home下对应core下的conf下修改schema.xml

<field name="arm" type="string" indexed="true" stored="true" />

因为name已经存在了,所以就不添加了

6.solr_home下对应core下的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>

 

此后数据库有更新,就会导入到solr中

 

 

 

以上是关于Solr 配置DataImport出错的问题的主要内容,如果未能解决你的问题,请参考以下文章

solr配置DataImport连接MySQL8数据库注意:

solr配置DataImport连接MySQL8数据库注意:

solr 配置中文分析器/定义业务域/配置DataImport功能(测试用)

12.solr学习速成之dataimport

Solr 配置连接数据库

solr系列--导入文件