0
votes

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

}