利用solr的 DataImportHandler從mysql資料庫建立索引
阿新 • • 發佈:2019-02-07
步驟1: 首先修改solrconfig.xml 加往上DataImportHandler的配置
solr-dataimporthandler-4.4.0.jar 與solr-dataimporthandler-extra-4.4.0.jar 兩個jar包放入solr-webapp\webapp\WEB-INF\lib目錄
mysql-connector-java-5.1.31.jar 也要放入該目錄下。
當然也可以利用solrconfig.xml中的lib標籤進行配置
<lib ...... />
步驟3: 新建data-config.xml 檔案,到conf目錄下。示例如下
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://199.xxx.xxx.xxx/quentinxxz_com"
user="qqq"
password="qqq"/> <document>
<entity name="product"
query="select id, price,modify_time from tts_product">
<field column="price" name="tts_price"/>
<field column="modify_time" name="tts_modify_time"/>
</entity>
</document>
</dataConfig> 步驟4:再在schema.xml中加入field <field name="tts_price" type="int" indexed="true" stored="true" />
<field name="tts_modify_time" type="date" indexed="true" stored="true" /> <response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">35</int> </lst> <lst name="initArgs"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </lst> <str name="command">full-import</str> <str name="status">idle</str> <str name="importResponse"/> <lst name="statusMessages"/> <str name="WARNING"> This response format is experimental. It is likely to change in the future. </str> </response> 當然也可能通過web ui介面進行索引操作
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>步驟2:配置solr伺服器時一般報這個錯org.apache.solr.common.SolrException: RequestHandler init failure或java.lang.ClassNotFoundException: org.apache.solr.handler.dataimport.DataImportHandler異常。原因是找不到solr-dataimporthandler-4.4.0.jar這個jar包,預設不在solr.war包裡,在下載包的dist目錄下 我的做法是直接
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://199.xxx.xxx.xxx/quentinxxz_com"
user="qqq"
password="qqq"/> <document>
<entity name="product"
query="select id, price,modify_time from tts_product">
<field column="price" name="tts_price"/>
<field column="modify_time" name="tts_modify_time"/>
</entity>
</document>
</dataConfig> 步驟4:再在schema.xml中加入field <field name="tts_price" type="int" indexed="true" stored="true" />
<field name="tts_modify_time" type="date" indexed="true" stored="true" /> <response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">35</int> </lst> <lst name="initArgs"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </lst> <str name="command">full-import</str> <str name="status">idle</str> <str name="importResponse"/> <lst name="statusMessages"/> <str name="WARNING"> This response format is experimental. It is likely to change in the future. </str> </response> 當然也可能通過web ui介面進行索引操作