可以将ApacheSolr与SpringBatch集成吗?

可以将ApacheSolr与SpringBatch集成吗?,spring,solr,spring-batch,Spring,Solr,Spring Batch,我读过关于ApacheSolr和SpringBatch的文章。ApacheSolr是一种强大的搜索技术。现在,我们希望从ApacheSolr读取数据,然后SpringBatch将处理该数据并写入数据库 我搜索了很多,但我无法获得有关此集成的演示。 有可能将Apache Solr与Spring Batch集成吗?我不太了解Apache Solr,但从其网站描述来看: Solr是一个独立的企业搜索服务器,具有类似REST的API。 您可以通过JSON、XML、CSV或XML将文档放入其中(称为“索引

我读过关于ApacheSolr和SpringBatch的文章。ApacheSolr是一种强大的搜索技术。现在,我们希望从ApacheSolr读取数据,然后SpringBatch将处理该数据并写入数据库

我搜索了很多,但我无法获得有关此集成的演示。
有可能将Apache Solr与Spring Batch集成吗?

我不太了解Apache Solr,但从其网站描述来看:

Solr是一个独立的企业搜索服务器,具有类似REST的API。 您可以通过JSON、XML、CSV或XML将文档放入其中(称为“索引”) HTTP上的二进制文件。您可以通过HTTP获取和接收JSON、XML、CSV来查询它 或二进制结果


因此,一个可能的解决方案是编写一个定制的
ItemWriter
,它通过HTTP查询获取Solr服务器,并以POJO(或简单字符串)的形式返回结果。然后,您可以在自定义阅读器、处理器(optionnal)和JBDC编写器中使用一个经典的“块”。

我们已经完成了一个基于spring批处理的应用程序,它在solr cloud上进行索引,相当于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();

        }
    }

solr云zookeeper主机
假的
导入org.apache.solr.client.solrj.SolrServer;
导入org.apache.solr.client.solrj.response.UpdateResponse;
导入org.apache.solr.common.SolrInputDocument;
公共类SolrItemWriter实现ItemWriter{
@凌驾
public void write(列表项)引发异常{
用于(对象:项){
SolrInputDocument SolrInputDocument=(SolrInputDocument)对象;
UpdateResponse response=solrServer.add(solrInputDocument);
}
UpdateResponse commitResponse=solrServer.commit();
}
}

我不确定我的回答是否对你有帮助,因为你的问题对要求不是很清楚。为什么要从ApacheSolr读取数据并将其写入mysql数据库

您能描述一下您的用例吗?您在Solr中搜索某些内容,然后将结果发送给Batch进行处理,对吗?您好,我正在使用以下配置在Apace Solr中导入mysql数据库。这是问题的关键部分,请加在那里,不要评论