Spring Data Elasticsearch's @Field annotation not working
I could finally replicate and solve the problem. The fact is that I was using ElasticTemplate for indexing and searching docs instead of repositories, because my business logic got a more complicated (use of aggregations, etc.).
After that, I removed the unused OperationDocumentRespository. It seems that the repository is needed for the type mapping being posted to ES server on startup. I thought having the @Document class should be enough, but it isn't.
So we have two options here:
- Keep the OperationDocumentRepository
Add this line to the app startup:
elasticsearchTemplate.putMapping(OperationDocument.class);
I tried to replicate issue using spring data elasticsearch sample application but as per your configuration i am getting the desired results as mentioned above.
Entire code is committed to project here --> link
Look at the TestCase which generate index and apply mapping when spring context loaded--> link
Here is mapping generated by TestCase :
{
"operations" : {
"aliases" : { },
"mappings" : {
"operation" : {
"properties" : {
"dateUp" : {
"type" : "date",
"store" : true,
"format" : "dd.MM.yyyy hh:mm"
},
"operationName" : {
"type" : "string",
"store" : true,
"analyzer" : "standard"
},
"sectors" : {
"type" : "nested"
},
"someTransientData" : {
"type" : "string",
"index" : "not_analyzed"
}
}
}
},
"settings" : {
"index" : {
"refresh_interval" : "1s",
"number_of_shards" : "5",
"store" : {
"type" : "fs"
},
"creation_date" : "1428677234773",
"number_of_replicas" : "1",
"version" : {
"created" : "1040499"
},
"uuid" : "-djzLu-IQ0CBs-M6R0-R6Q"
}
},
"warmers" : { }
}
}
Can you create similar example with spring boot using https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-elasticsearch
and commit on public share?