How to set index setting while creation using Elasticsearch v8 Java API client. I can able to set numberOfShards and numberOfReplicas using below syntax but could not able to set analysis due to confusing builder syntax.
elasticsearch.Client().indices()
.create(createIndexBuilder -> createIndexBuilder
.settings(builder->builder
.numberOfReplicas("3")
.numberOfShards("3")
.analysis(aBuilder->aBuilder.filter(TokenFilter)
.filter(Map.of("my_filter",
Map.of("type", "shingle",
"max_shingle_size", 3,
"min_shingle_size", 2,
"output_unigrams", false
))).analyzer())
.index("product")
I want to achieve these settings of the index
{
"number_of_replicas": 3,
"analysis": {
"normalizer": {
"my_lowercase": {
"filter": [
"lowercase"
],
"type": "custom"
}
},
"filter": {
"my_filter": {
"type": "shingle",
"output_unigrams": false,
"max_shingle_size": 3,
"min_shingle_size": 2
}
},
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"type": "custom",
"filter": [
"lowercase",
"my_filter"
]
}
}
},
"number_of_shards": 3
}