2017-04-12 93 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的工作得很好。謝謝。