我讀到了Apache Solr和Spring Batch。 Apache Solr是強大的搜索技術。現在,我們要從Apache Solr讀取數據,然後Spring Batch將處理該數據並寫入數據庫。是否可以將Apache Solr與Spring Batch集成?
我搜索了很多,但我無法得到關於這個integrartion的演示。 是否可以將Apache Solr與Spring Batch集成?
我讀到了Apache Solr和Spring Batch。 Apache Solr是強大的搜索技術。現在,我們要從Apache Solr讀取數據,然後Spring Batch將處理該數據並寫入數據庫。是否可以將Apache Solr與Spring Batch集成?
我搜索了很多,但我無法得到關於這個integrartion的演示。 是否可以將Apache Solr與Spring Batch集成?
我真的不知道Apache Solr實現,但是從它的網站介紹:
的Solr是一個REST API像一個獨立的企業搜索服務器。 您可以通過HTTP以二進制格式通過JSON,XML,CSV或 將文檔放在其中(稱爲「索引」)。您可以通過HTTP GET查詢並接收JSON,XML,CSV 或二進制結果。
所以,一個可能的解決辦法是寫一個自定義ItemWriter
它通過HTTP GET查詢你的Solr服務器並返回結果爲POJO(或一個簡單的字符串)。然後,您可以在自定義閱讀器,處理器(optionnal)和JBDC Writer中使用經典的「塊」。
我們已經完成了一個基於spring批處理的應用程序,該應用程序在solr雲上進行索引,這相當於Solr「數據導入請求處理程序」。
步驟1:從數據庫中讀取
<bean id="itemReader" class="org.springframework.batch.item.database.JdbcPagingItemReader" scope="step">
<property name="dataSource" ref="mysqlDataSource"/>
<property name="queryProvider">
<bean class="org.springframework.batch.item.database.support.MySqlPagingQueryProvider">
</bean>
</property>
<property name="rowMapper">
<bean class="implement org.springframework.jdbc.core.RowMapper">
<!-- public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
return SolrInputDocument }
-->
</bean>
</property>
</bean>
步驟2:處理所讀取的數據
<bean id="intermediateProcessor" class="our.own.intermediate.Processer" scope="step">
</bean>
步驟3:寫/後數據到Apache Solr實現
<bean id="solrItemWriter" class="our.own.writer.SolrItemWriter" scope="step">
<property name="solrServer" ref="solrServer"/>
</bean>
<bean id="solrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer" destroy-method="shutdown" >
<constructor-arg index="0"><value>solr cloud zookeeper host</value></constructor-arg>
<constructor-arg index="1"><value>false</value></constructor-arg>
</bean>
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrInputDocument;
public class SolrItemWriter implements ItemWriter {
@Override
public void write(List items) throws Exception {
for (Object object : items) {
SolrInputDocument solrInputDocument = (SolrInputDocument) object;
UpdateResponse response = solrServer.add(solrInputDocument);
}
UpdateResponse commitResponse = solrServer.commit();
}
}
我不知道我的答案會對你有所幫助,因爲你的問題對要求不太清楚。爲什麼你想從apache solr讀取數據並將其寫入mysql數據庫
你能描述一下你的用例嗎?你在Solr中搜索某些東西,然後將結果發送到批處理來處理它,對嗎? – Mysterion
嗨Mysterion,我通過使用以下配置導入Apace Solr中的MySQL數據庫。 <數據源類型= 「JdbcDataSource」 驅動= 「com.mysql.jdbc.Driver」 URL = 「JDBC:MySQL的://本地主機:3306/spring_batch_example」 用戶= 「根」 密碼= 「根」/ > –
它是問題的重要組成部分,請在此處添加它,而不是在評論中 – Mysterion