Hello,
I've been trying to get Solr to run with DataImportHandler. I've found
various issues and fixed them, but I'm still getting an error message,
and I can't find anything else to fix. Could someone please take a look
at my setup to see if I've done something wrong? When I go to the Solr
admin page, I get the following error:
_SolrCore 'collection1' is not available due to init failure:
RequestHandler init failure,trace=org.apache.solr.common.SolrException:
SolrCore 'collection1' is not available due to init failure:
RequestHandler init failure at
org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:1212) at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:248)
at
_
There's more to the error, but it looks like it doesn't contain any
useful information, so please let me know if I should show more.
My core instance is in /etc/solr/collection1/ and I have the JDBC driver
in /etc/solr/lib/. The DataImportHandler jar files are in
/opt/solr/contrib/dataimporthandler/lib and /opt/solr/dist/. Here are
the RequestHandler and lib sections of my solrconfig.xml file, which is
in /etc/solr/collection1/conf/.
<requestHandler name="/dataimport"
class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
<lib dir="/opt/solr/contrib/dataimporthandler/lib" regex=".*\.jar" />
<lib dir="/opt/solr/dist/"
regex="apache-solr-dataimporthandler-.*\.jar" />
<lib dir="/etc/solr/lib" regex=".*\.jar" />
I've tried writing the file paths as if they were from the /etc/solr/
directory, and also as if they were from the /etc/solr/collection1/conf/
directory, and neither worked so I just started from the top.
----------------------------------------------------------------------------------
Here is my data-config.xml (also in the /etc/solr/collection1/conf/
directory). The keyword, catCatName, and brandCatName columns
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/XXXXX" user="XXXXX" password="XXXXX"/>
<document name="products">
<entity name="product" query="select id, brand, prodName,
description, buyURL, imgURL, currency, price, salePrice, fanNum,
lastUpdate from product_CJ" pk="id" deltaImportQuery="select id, brand,
prodName, description, buyURL, imgURL, currency, price, salePrice,
fanNum, lastUpdate from product_CJ where id='${dih.delta.id}'"
deltaQuery="select id from product_CJ where lastUpdate >
'${dih.last_index_time}'">
<field column="id" name="id" />
<field column="brand" name="brand" />
<field column="prodName" name="prodName" />
<field column="description" name="description" />
<field column="buyURL" name="buyURL" />
<field column="imgURL" name="imgURL" />
<field column="currency" name="currency" />
<field column="price" name="price" />
<field column="salePrice" name="salePrice" />
<field column="fanNum" name="fanNum" />
<field column="lastUpdate" name="lastUpdate" />
<entity name="brandInfo" query="select feedID, brandName,
kickbackBase, kickbackMax, kickbackFlat, kickbackType, feed from
brands_inactive where feedID='${product.brand}'">
<field name="feedID" column="feedID" />
<field name="brandName" column="brandName" />
<field name="kickbackBase" column="kickbackBase" />
<field name="kickbackMax" column="kickbackMax" />
<field name="kickbackFlat" column="kickbackFlat" />
<field name="kickbackType" column="kickbackType" />
<field name="feed" column="feed" />
</entity>
<entity name="keywords" query="select keyword from
productKeywords where prodID='${product.id}'">
<field column="keyword" name="keyword" />
</entity>
<entity name="catIDs" query="select catID from prod_cat
where prodID='${product.id}'">
<entity name="catMaps" query="select defCatID from
cat_cat_maps where catID='${catIDs.catID}'">
<entity name="catCatNames" query="select catName AS
catCatName from definedCategories where defCatID='${catMaps.defCatID}'">
<field column="catCatName" name="catCatName" />
</entity>
</entity>
</entity>
<entity name="brandMaps" query="select defCatID from
brand_cat_maps where brandID='${product.brand}'">
<entity name="brandCatNames" query="select catName AS
brandCatName from definedCategories where defCatID='${brandMaps.defCatID}'">
<field column="brandCatName" name="brandCatName" />
</entity>
</entity>
</entity>
</document>
</dataConfig>
----------------------------------------------------------------------------------
And here is my schema.xml
<fields>
<field name="id" type="int" indexed="true" stored="true"
required="true" multiValued="false" />
<field name="prodName" type="text_general" indexed="true"
stored="true" required="true"/>
<field name="brand" type="int" indexed="false" stored="true"
required="true"/>
<field name="brandName" type="text_general" indexed="true"
stored="true" required="true"/>
<field name="currency" type="currency" indexed="true" stored="true" />
<field name="price" type="float" indexed="false" stored="true"/>
<field name="salePrice" type="float" indexed="false" stored="true"/>
<field name="fanNum" type="int" indexed="false" stored="true" />
<field name="feedID" type="int" indexed="false" stored="false"
required="true" />
<field name="kickbackBase" type="float" indexed="false" stored="true" />
<field name="kickbackMax" type="float" indexed="false" stored="true" />
<field name="kickbackFlat" type="float" indexed="false" stored="true" />
<field name="kickbackType" type="string" indexed="false"
stored="true" />
<field name="feed" type="string" indexed="false" stored="true" />
<field name="keyword" type="text_general" indexed="true"
stored="true" multiValued="true"/>
<field name="catCatName" type="text_general" indexed="true"
stored="true" multiValued="true"/>
<field name="brandCatName" type="text_general" indexed="true"
stored="true" multiValued="true"/>
<field name="buyURL" type="text_general" indexed="false"
stored="true" required="true"/>
<field name="imgURL" type="text_general" indexed="false" stored="true"/>
<field name="lastUpdate" type="string" indexed="false" stored="true"/>
<field name="description" type="text_general" indexed="false"
stored="true"/>
<field name="text" type="text_general" indexed="true" stored="false"
multiValued="true"/>
<field name="text_rev" type="text_general_rev" indexed="true"
stored="false" multiValued="true"/>
<field name="brand_exact" type="text_general" indexed="true"
stored="false"/>
</fields>
<uniqueKey>id</uniqueKey>
<copyField source="catCatName" dest="text"/>
<copyField source="brandCatName" dest="text"/>
<copyField source="prodName" dest="text"/>
<copyField source="brandName" dest="brand_exact"/>
<copyField source="description" dest="text"/>
<copyField source="keyword" dest="text"/>
Does anyone see anything that I'm doing wrong?
Brian
_
_