org.springframework.data.solr.UncategorizedSolrException:找不到集合

时间:2017-04-12 15:18:38

标签: solrcloud spring-data-solr

我正在使用spring-data-solr来查询在Hadoop cluser上运行的索引Solr数据。我的收藏集名称为party_name。以下是我用于配置Cloud客户端的代码:

@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 Boot 1.5.2版: compile('org.springframework.boot:spring-boot-starter-data-solr')

感谢任何帮助或指示。

1 个答案:

答案 0 :(得分: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运行良好。感谢。