簡體   English   中英

索引編制過程中出現SOLR錯誤java.lang.ClassCastException

[英]SOLR error java.lang.ClassCastException during indexing

這是我的SOLR數據模型,

@SolrDocument(solrCoreName = "solrData")
public class SolrData {

@Id
@Indexed(name = "id", type = "string")
String id;

@Indexed(name = "name", type = "string")
String name;

這種SOLR配置,

@Configuration
@EnableSolrRepositories(basePackages={"com.ows.repository.solrRepository"}, multicoreSupport=true)
@ComponentScan

public class SolrConfig {
    static final String SOLR_HOST = "http://localhost:8983/solr/";

    @Bean
    public SolrClient solrClient() {
        return new HttpSolrClient.Builder(SOLR_HOST).build();
    }

    @Bean
    public SolrTemplate solrTemplate(SolrClient solrClient) throws Exception {
        return new SolrTemplate(solrClient);
    }
}

儲存庫

public interface SolrProductRepository extends SolrCrudRepository<SolrData, String> {
    List<SolrData> findByName(String name);
}

索引控制器,

@Autowired
SolrProductRepository solrProductRepository;

@RequestMapping("/solrindex")
public void solrIndex(Model model) {
        SolrData solrData = new SolrData();
        solrData.setName("You know Who");
        solrProductRepository.save(solrData);
}

POM.xml

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-solr</artifactId>
        <version>2.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.apache.solr</groupId>
        <artifactId>solr-common</artifactId>
        <version>1.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.solr</groupId>
        <artifactId>solr-solrj</artifactId>
        <version>6.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.3.10.RELEASE</version>
    </dependency>

通過上述設置,我在使用索引控制器進行索引時說,

更新了完整的錯誤消息。

 org.springframework.data.solr.UncategorizedSolrException: org.apache.solr.common.SolrInputDocument cannot be cast to java.util.Map; nested exception is java.lang.ClassCastException: org.apache.solr.common.SolrInputDocument cannot be cast to java.util.Map
    at org.springframework.data.solr.core.SolrTemplate.execute(SolrTemplate.java:224)
    at org.springframework.data.solr.core.SolrTemplate.saveBean(SolrTemplate.java:330)
    at org.springframework.data.solr.core.SolrTemplate.saveBean(SolrTemplate.java:318)
    at org.springframework.data.solr.core.SolrTemplate.saveBean(SolrTemplate.java:300)
    at org.springframework.data.solr.repository.support.SimpleSolrRepository.save(SimpleSolrRepository.java:149)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:504)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:489)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:461)

 Caused by: java.lang.ClassCastException: org.apache.solr.common.SolrInputDocument cannot be cast to java.util.Map
    at org.springframework.data.solr.core.convert.MappingSolrConverter.write(MappingSolrConverter.java:62)
    at org.springframework.data.solr.core.SolrTemplate.convertBeanToSolrInputDocument(SolrTemplate.java:1132)
    at org.springframework.data.solr.core.SolrTemplate$4.doInSolr(SolrTemplate.java:335)
    at org.springframework.data.solr.core.SolrTemplate$4.doInSolr(SolrTemplate.java:330)
    at org.springframework.data.solr.core.SolrTemplate.execute(SolrTemplate.java:220)
    ... 129 more

解決了

我通過以下設置解決了該問題,

唯一的配置文件更改為以下內容,

@Configuration
@EnableSolrRepositories(basePackages={"com.ows.rokomari.repository.solrRepository"}, multicoreSupport=true)
@ComponentScan
public class SolrConfig {

static final String SOLR_HOST = "http://localhost:8983/solr";

@Bean
public SolrClient solrClient() {

return new HttpSolrClient(SOLR_HOST);
}

@Bean
public SolrTemplate solrTemplate(SolrClient solrClient) throws Exception {
return new SolrTemplate(solrClient);
}
}

pom.xml文件更改為以下設置,

<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-solr</artifactId>
  <version>2.1.6.RELEASE</version>
</dependency>
<dependency>
  <groupId>org.apache.solr</groupId>
  <artifactId>solr-common</artifactId>
  <version>1.3.0</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>4.3.10.RELEASE</version>
</dependency>

現在一切都很好。

我加入了solr-common,因為除此之外,該項目還會引發錯誤。 由於我的項目是Spring,並且在版本4上運行,並且具有其他一些舊的依賴項。 我猜與更新的Solr相關的依賴關系與現有的依賴關系沖突,這一點可以解決。

我使用的是spring-data-solr,與使用Solrj有點不同。 Solrj實現可以在這里找到

暫無
暫無

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

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