Is there a way to create an index and specify a custom analyzer using the Java API? It supports adding mappings at index creation, but I can\'t find a way to do something li
You can set analyzer using client.admin().indices().prepareCreate("twitter").setSettings(...)
. There are several ways to build settings. You can load them from text, map or even use jsonBuilder if that's what you want:
client.admin().indices().prepareCreate("twitter")
.setSettings(Settings.settingsBuilder().loadFromSource(jsonBuilder()
.startObject()
.startObject("analysis")
.startObject("analyzer")
.startObject("steak")
.field("type", "custom")
.field("tokenizer", "standard")
.field("filter", new String[]{"snowball", "standard", "lowercase"})
.endObject()
.endObject()
.endObject()
.endObject().string()))
.execute().actionGet();
If you are on a test environnent you can also uses this project which will create your indexes based on Java annotations. https://github.com/tlrx/elasticsearch-test