Spring Data Elasticsearch's @Field Annotation funktioniert nicht

Ich habe eine Spring Boot-Anwendung mit Spring Data Elasticsearch-Plugin in der Datei pom.xml. Ich habe eine Dokumentenklasse erstellt, die ich indizieren möchte:

@Document(indexName = "operations", type = "operation")
public class OperationDocument {

@Id
private Long id;

@Field(
    type = FieldType.String, 
    index = FieldIndex.analyzed, 
    searchAnalyzer = "standard", 
    indexAnalyzer = "standard",
    store = true
)
private String operationName;

@Field(
    type = FieldType.Date, 
    index = FieldIndex.not_analyzed, 
    store = true, 
    format = DateFormat.custom, pattern = "dd.MM.yyyy hh:mm"
)
private Date dateUp;

@Field(
    type = FieldType.String, 
    index = FieldIndex.not_analyzed, 
    store = false
) 
private String someTransientData;

@Field(type = FieldType.Nested)
private List<Sector> sectors;

//Getter and setters

Ich habe auch ein Repository für diese Klasse erstellt:

 public interface OperationDocumentRepository 
      extends ElasticsearchRepository<OperationDocument, Long> {
 }

Ich habe einen Test durchgeführt, der drei Beispielobjekte mithilfe des Repository indiziert. Es ist ziemlich lang, also werde ich es veröffentlichen, es wird nur benötigt. Tatsache ist, dass das auf dem ES-Server erstellte Mapping die von @Field-Annotationen festgelegte Konfiguration ignoriert:

"mappings": {
  "operation": {
    "properties": {
      "operationName": {
        "type": "string"
      },
      "dateUp": {
        "type": "long"
      },
      "someTransientData": {
        "type": "string"
      },
      "sectors": {
        "properties": {
          "id": {
            "type": "long"
          },
          "sectorName": {
            "type": "string"
          }
        }
      }
    }
  }
}

Es gibt keine Informationen zu Analysegeräten, "someTransientData" wird gespeichert und indiziert, und dateUp wird als Long anstelle von Date eingegeben.

Ein Beispieldokument, das direkt vom Server angefordert wurde:

 {
   "_index": "operations",
   "_type": "operation",
   "_id": "AUyUk2cY3nXeOFxdOlQW",
   "_version": 1,
   "_score": 1,
   "_source": {
     "id": null,
     "operationName": "Second Operation Name",
     "dateUp": 1428421827091,
     "someTransientData": "Do not index or store",
     "sectors": [
       {
         "id": 2,
         "sectorName": "Health Care"
       },
       {
         "id": 3,
         "sectorName": "Construction"
       }
     ]
   }
 }

Ich habe auch festgestellt, dass beim zweiten Ausführen der Anwendung beim Start diese Fehlermeldung nur ausgegeben wird, wenn der Index bereits vorhanden ist:

ERROR 19452 --- [main] .dersAbstractElasticsearchRepository: Elasticsearch-Knoten konnten nicht geladen werden: org.elasticsearch.index.mapper.MergeMappingException: Zusammenführung mit Fehlern fehlgeschlagen {[mapper [someTransientData] hat unterschiedliche Indexwerte, mapper [someTransientData] hat unterschiedliche Werte tokenize values, mapper [someTransientData] hat einen anderen index_analyzer, object mapping [sectoren] kann nicht von nicht verschachtelt nach verschachtelt geändert werden, mapper [operationName] hat verschiedene store values, mapper [operationName] hat einen anderen index_analyzer, mapper [dateUp] von anderer Typ, aktueller_Typ [lang], zusammengeführter_Typ [Datum]]}

Es ist ein Fehler von Spring Data Elastic Search oder mache ich etwas falsch?

Ich habe die stabile Version ausprobiert, die Spring Boot und der letzte Schnappschuss von Spring-Data-Elasticsearch bieten. Ich habe auch den eingebetteten Elasticsearch-Server ausprobiert, der vom Plugin bereitgestellt wird, und einen externen Server der aktuellen Version. Ich habe immer die gleichen Ergebnisse.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage