2017-04-12 77 views
0

我使用spring-data-solr来查询在Hadoop集群上运行的索引Solr数据。我收藏的名字是party_name。下面是我用来配置云客户端代码:org.springframework.data.solr.UncategorizedSolrException:Collection not found

@Configuration 
@EnableSolrRepositories(basePackages = { "org.nccourts.repository" }, multicoreSupport = true) 
public class SpringSolrConfig { 
    @Value("${spring.data.solr.zk-host}") 
    private String zkHost; 

    @Bean 
    public SolrClient solrClient() { 
    return new CloudSolrClient(zkHost); 
    } 

    @Bean 
    public SolrTemplate solrTemplate(CloudSolrClient solrClient) throws Exception { 
    solrClient.setDefaultCollection("party_name"); 
    return new SolrTemplate(solrClient); 
    } 

}

当我运行我的JUnit测试,我得到以下异常:

org.springframework.data.solr.UncategorizedSolrException: Collection not found: partyname; nested exception is org.apache.solr.common.SolrException: Collection not found: partyname 
    at org.springframework.data.solr.core.SolrTemplate.execute(SolrTemplate.java:215) 
    at org.springframework.data.solr.core.SolrTemplate.executeSolrQuery(SolrTemplate.java:1030) 

注意收集未找到:partyname,但我输入的收集名称是 party_name

我使用Spring引导版本1.5.2具有以下依赖性: compile('org.springframework.boot:spring-boot-starter-data-solr')

任何帮助或指针赞赏。

+0

您是否可以添加实体类(包括注释)的完整声明(大概是'@SolrDocument public class PartyName {...}')? – manish

回答

0

你的建议给了我这个想法。我的模型是这样的:

公共类PartyName {

@Field("case_status") 
private String caseStatus; 

private String county; 

@Field("court_type") 
private String courtType; 

private String id; 

@Field("in_regards_to") 
private String inRegardsTo; 

@Field("biz_name") 
private String bizName; // business name after parsing name 

@Field("first_name") 
private String firstName; // person 1st name after parsing name 

@Field("last_name") 
private String lastName; // person last name after parsing name 

@Field("middle_name") 
private String middleName; // person middle name after parsing name 

private String name; // original name before parsing 
private String prefix; // person prefix after parsing name 
private String suffix; // person name suffix after parsing name 

@Field("party_num") 
private Integer partyNumber; 

@Field("party_role") 
private String partyRole; 

@Field("party_status") 
private String partyStatus; 

@Field("row_of_origin") 
private String rowOrigin; 

@Field("seq_num") 
private Integer seqNumber; 

private Integer year; 

...的getter/setter省略。 } 当你建议我后我的实体的代码,我意识到我需要添加以下注释: @SolrDocument(solrCoreName =“party_name”) 公共类PartyName { .. 我做了之后,JUnit的工作得很好。谢谢。