Аннотация @Field для Spring Data Elasticsearch не работает

У меня есть приложение Spring Boot с плагином Spring Data Elasticsearch в pom.xml. Я создал класс документа, который я хотел бы проиндексировать:

@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

Я также создал хранилище для этого класса:

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

Я сделал тест, который индексирует три образца объектов, используя хранилище. Это довольно долго, поэтому я выложу только нужно. Дело в том, что сопоставление, созданное на сервере ES, игнорирует конфигурацию, заданную аннотациями @Field:

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

Информация об анализаторах отсутствует, «someTransientData» сохраняется и индексируется, а dateUp печатается как «Long» вместо «Date».

Пример документа, запрошенного непосредственно с сервера:

 {
   "_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"
       }
     ]
   }
 }

Я также отметил, что когда я запускаю приложение во второй раз, во время запуска я получаю эту ошибку, выводимую только тогда, когда индекс уже существует:

ОШИБКА 19452 --- [main] .dersAbstractElasticsearchRepository: не удалось загрузить узлы эластичного поиска: org.elasticsearch.index.mapper.MergeMappingException: сбой слияния со сбоями {[mapper [someTransientData] имеет разные значения индекса, mapper [someTransientData] имеет разные токены значения, mapper [someTransientData] имеет разные index_analyzer, отображение объекта [сектора] не может быть изменено с не вложенного на вложенное, mapper [operationName] имеет разные значения хранилища, mapper [operationName] имеет разные index_analyzer, mapper [dateUp] отличается type, current_type [long], merged_type [date]]}

Это ошибка Spring Data Elastic Search или я что-то не так делаю?

Я попробовал стабильную версию, предоставленную весенней загрузкой, и последний снимок spring-data -asticsearch. Я также попробовал встроенный сервер Elasticsearch, предоставляемый плагином, и внешний сервер текущей версии. Я всегда получал одинаковые результаты.

Ответы на вопрос(2)

Ваш ответ на вопрос