elasticsearch-java icon indicating copy to clipboard operation
elasticsearch-java copied to clipboard

Error deserializing co.elastic.clients.elasticsearch._types.analysis.CharFilterDefinition: Unknown 'type' value: 'stconvert'

Open Huyueeer opened this issue 2 years ago • 0 comments

Description

I am trying to create an index using a java client, and I have installed the stconvert plugin in the elasticsearch cluster (a plugin that provides replacement for both traditional and simplified Chinese), and I am getting this error during the index creation process.

My code implementation:

Reader stconvertJson = new StringReader(
                "{\"type\":\"stconvert\",\"delimiter\":\"#\",\"keep_both\":false,\"convert_type\":\"t2s\"}");
Map<String, CharFilter> charFilterMap = new HashMap<>();
        charFilterMap.put("tsconvert", new CharFilter.Builder()
                .definition(new CharFilterDefinition.Builder().withJson(stconvertJson).build()).build());

CreateIndexRequest c = new CreateIndexRequest.Builder()
                    .index(index)
                    .aliases(aliases, a -> a
                            .isWriteIndex(true))
                    .settings(s -> s
                            .analysis(a -> a
                                    .charFilter(charFilterMap)  //this
                                    .filter(filterMap)
                                    .tokenizer(tokenizerMap)
                                    .analyzer(analyzerMap))
                            .numberOfShards("1")
                            .numberOfReplicas("1"))
                    .mappings(typeMapping)
                    .build();
            createIndexResponse = elasticClient.indices().create(c);

found that this is not feasible, and also in order to be able to pass serialization, I also tried to implement CharFilterDefinitionVariant to do it, similar to HtmlStripCharFilter, but eventually failed because CharFilterDefinition.Kind could not satisfy me.

So I was wondering if elasticsearch has additional plugins to build index in the java client, how should I go about doing that or inherit the implementation code?

Huyueeer avatar Feb 17 '23 08:02 Huyueeer