升级到Spring Boot 2.2.X之后,MappingpingException(尝试添加id)

时间:2020-01-31 12:59:30

标签: spring-data-elasticsearch

将Spring Boot升级到2.2.4(从2.1.x)之后,将org.springframework.cloud:spring-cloud-dependencies升级到Hoxton.RELEASE和org.springframework.cloud:spring-cloud-stream-dependencies升级到Horsham释放。

尝试创建索引文档时收到以下异常。

原因:org.springframework.data.mapping.MappingException:尝试添加id属性private java.util.Map .CatalogIndex.document,但已经将属性private java.lang.String .CatalogIndex.id注册为id。检查您的映射配置!

请找到实体类层次结构。为了简单起见,我删除了所有的getter和setter方法。


package mypackage.entity;

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Parent;

import java.util.Date;
import java.util.List;
import java.util.Map;

public class CatalogIndex {

    private static final long serialVersionUID = 1L;

    @Id
    private String id;

    @Parent(type = "Initiative")
    private String initiativeId;

    private List<Map<String, Object>> typeHierarchy;

    private Map<String, Object> document;

    private List<Map<String, Object>> filters;
}

package mypackage.entity;

import org.springframework.data.elasticsearch.annotations.Document;

@Document(indexName = "cataloginitiative")
public class CatalogInitiativeIndex extends CatalogIndex {   }

1 个答案:

答案 0 :(得分:1)

Spring Data Elasticsearch在检查Entity类时,尝试找出该类的哪个属性用作 Id 属性。如果满足以下条件之一,则属性符合此条件:

  • 该属性用@Id注释
  • 该属性命名为 id
  • 该属性命名为 document

因此,在您的情况下,您具有具有匹配名称和注释的属性 id 和具有匹配名称的属性 document

您必须将属性 document 重命名为其他名称。