Hi,
I'm trying to put a template mapping into elasticsearch using the Java api. This is the code I'm using:
Client client = TransportClient.builder()
.build()
.addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress(ES_ADDRESS, 9300)));
String indexSettings;
InputStream jsonSettingsIS = Thread.currentThread().getContextClassLoader().getResourceAsStream("" + index + ".json");
indexSettings = new Scanner(jsonSettingsIS).useDelimiter("\\A").next();
try
{
client.admin()
.indices()
.preparePutTemplate(index)
.setTemplate(indexSettings)
.get();
}
catch (IndexTemplateAlreadyExistsException e)
{
LOGGER.info("Template index [" + index + "] already exists.");
}
When executing that snipped of code I get this error:
Exception in thread "main" InvalidIndexTemplateException[index_template [template-*] invalid, cause [Validation Failed: 1: template must not contain a space;2: template must not contain a ',';3: template must not container the following characters [\, /, *, ?, ", <, >, |, , ,];]]
at org.elasticsearch.cluster.metadata.MetaDataIndexTemplateService.validate(MetaDataIndexTemplateService.java:218)
The template I'm trying to put is
{
"template": "template-*",
"settings": {
"index": {
"analysis": {
"analyzer": {
"whitespace": {
"type": "whitespace"
}
}
}
}
}
}