With Spring-Data-Elasticsearch, I am trying to use analyzers and mappings defined in elasticsearch_config.json.
This JSON file is in /src/main/resources folder.
My JAVA model looks like:
@Document(indexName = "test", type="Tweet") @Setting(settingPath = "/elasticsearch_config.json") public class Tweet { @Id private String idStr; /** other fields, getters and setters are omitted **/ }
elasticsearch_config.json contains both settings and mappings:
{ "settings": { /* some filters */}, "mappings": { /* some types' mappings*/ } }
I tried with curl, I get no problem indexing/searching.
My problem:
I want to use @Setting to configure my mappings (not curl), but @Setting annotation doesn't seem to work. With @Setting, when I use curl to check my mapping, I don't get all the mappings I defined in elasticsearch_config.json :
curl -X GET "localhost:9200/test/_mapping?pretty=true"
My guess is that Spring can't find the elasticsearch_config.json properly. However I have already checked that myproject/src/main/resources is in my project's build path...
I appreciate any help, thank you!
Notes: I have found this solution that may work, but:
1. I don't understand where nodeBuilder comes from
2. I may be wrong but, isn't there a solution only using @Setting?
UPDATES: My mappings I separeted analyzers from mappings. mappings.json looks like this:
{ "mappings": { "Tweet": { "_id": { "path":"idStr", "properties": { "idStr": { "type":"string", "index":"not_analyzed", "store":true } } }, "numeric_detection" : true, "dynamic_templates": [ { "id_fields": { "match":"userId*", "match_mapping_type": "string", "mapping": { "type":"string", "index":"no", "store":true } } }, { "name_fields": { "match":"*Name", "match_mapping_type": "string", "mapping": { "type":"string", "index":"no", "store":true } } } ], "properties": { "text": { "type": "string", "index":"analyzed", "analyzer":"custom_analyzer", "store": true }, "createdAt": { "type": "date", "format": "yyyy-MM-dd", "index":"analyzed", "store": true }, "testVersion": { "type": "integer", "index":"not_analyzed", "store":false } } } } }