2016-08-06 49 views
0

Ich habe diesen Fehler:IndexQueryBuilder Methode innerhalb Ergebnisse Entitätsklasse in „failed das Dokument zu indizieren [id: 1]“

org.springframework.data.elasticsearch.ElasticsearchException: failed to index the document [id: 1]

at org.springframework.data.elasticsearch.core.ElasticsearchTemplate.prepareIndex(ElasticsearchTemplate.java:1028) at org.springframework.data.elasticsearch.core.ElasticsearchTemplate.index(ElasticsearchTemplate.java:525) ...

Jedes Mal, wenn ich in meiner Einheit Book Klasse setzte eine getIndexQuery Methode. So ist es wie folgt aussehen:

@Getter 
@Setter 
@NoArgsConstructor 
@AllArgsConstructor 
@Builder 
@Document(indexName = "bookshop", type = "book", shards = 1, replicas = 0, refreshInterval = "-1") 
public class Book { 

    @Id 
    private String bookId; 

    @Field(type = FieldType.String, store = true) 
    private String title; 

    public IndexQuery getIndexQuery(){ 
     return new IndexQueryBuilder().withId(this.getBookId()).withObject(this).build(); 
    } 

} 

Der Fehler tritt auf, auch wenn ich diese Methode nicht anyware in meinem Code. Wie kann ich diese Methode in meine Entity-Klasse einfügen, ohne sie mit dem enitties-Schema zu verwirren (weil das ist, was ich vermute, was falsch ist)?

Antwort

1

Verwenden @JsonIgnore.

@JsonIgnore 
public IndexQuery getIndexQuery(){ 
    return new IndexQueryBuilder().withId(this.getBookId()).withObject(this).build(); 
} 

com.fasterxml.jackson.annotation.JsonIgnore ist aus jackson-core-2.8.1.jar oder diese Abhängigkeit hinzufügen.

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>2.8.1</version> 
</dependency>