簡體   English   中英

是否可以將Apache Solr與Spring Batch集成在一起?

[英]Is it possible to integrate Apache Solr with Spring Batch?

我讀了有關Apache Solr和Spring Batch的文章。 Apache Solr是強大的搜索技術。 現在,我們要從Apache Solr讀取數據,然后Spring Batch將處理該數據並將其寫入數據庫。

我進行了很多搜索,但無法獲得有關此集成的演示。 是否可以將Apache Solr與Spring Batch集成在一起?

我們已經完成了一個基於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數據庫

我不太了解Apache Solr,但從其網站描述中可以了解到:

Solr是具有REST類API的獨立企業搜索服務器。 您可以通過JSON,XML,CSV或HTTP二進制文件將文檔放入其中(稱為“索引編制”)。 您可以通過HTTP GET查詢它,並接收JSON,XML,CSV或二進制結果。

因此,一種可能的解決方案是編寫一個自定義的ItemWriter ,它可以通過HTTP GET查詢您的Solr服務器並以POJO(或簡單的String)形式返回結果。 然后,您可以將經典的“塊”與您的自定義閱讀器,處理器(可選)和JBDC Writer一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM