Elasticsearch v8 Java API client adding index settings

The example below creates the index according to the setting you mentioned.


    TokenFilterDefinition tokenFilterDefinition = new TokenFilterDefinition.Builder()
        .shingle(ShingleTokenFilter.of(s ->
            s.maxShingleSize("3").minShingleSize("2")
        ))
        .build();

    TokenFilter tokenFilter = new TokenFilter.Builder()
        .definition(tokenFilterDefinition)
        .build();

    CustomAnalyzer customAnalyzer = new CustomAnalyzer.Builder()
        .tokenizer("standard")
        .filter("lowercase", "my_filter")
        .build();

    Analyzer analyzer = new Analyzer.Builder()
        .custom(customAnalyzer)
        .build();

    IndexSettingsAnalysis indexAnalyzers = new IndexSettingsAnalysis.Builder()
        .filter("my_filter", tokenFilter)
        .analyzer(Map.of("my_analyzer", analyzer))
        .build();

    client.indices()
        .create(createIndexBuilder -> createIndexBuilder
            .settings(builder -> builder
                .numberOfReplicas("3")
                .numberOfShards("3")
                .analysis(indexAnalyzers)
            ).index("test_analyzer"));
1 Like