How do i define ElasticSearch Dynamic Templates?
Your dynamic template is defined correctly. The issue is that you will need to index a document with the lang.en.title
field in it before the dynamic template will apply the appropriate mapping. I ran the same dynamic mapping that you have defined above in your question locally and got the same result as you.
However, then I added a single document to the index.
POST /cl/titles/1{ "lang.en.title": "Knocked out"}
After adding the document, I ran the analyzer again and I got the expected output:
GET /cl/_analyze?field=lang.en.title&text=knocked{ "tokens": [ { "token": "knock", "start_offset": 0, "end_offset": 7, "type": "<ALPHANUM>", "position": 1 } ]}
The index needs to have a document inserted so that it can execute the defined mapping template for the inserted fields. Once that field exists in the index and has the dynamic mapping applied, _analyze
API calls will execute as expected.