JavaClientApi create SynonymsRule failed

PutSynonymRuleRequest.Builder builder = new PutSynonymRuleRequest.Builder();
        builder.setId("my_synonyms_set")
                .ruleId("1")
                .synonyms("phone","苹果","华为");
        return esSynonymsClient.putSynonymRule(builder.build());

[es/synonyms.put_synonym_rule] failed: [illegal_argument_exception] Failed to parse: {"synonyms":["phone","苹果","华为"]}
at co.elastic.clients.transport.ElasticsearchTransportBase.getApiResponse(ElasticsearchTransportBase.java:345) ~[elasticsearch-java-8.12.2.jar:na]
at co.elastic.clients.transport.ElasticsearchTransportBase.performRequest(ElasticsearchTransportBase.java:147) ~[elasticsearch-java-8.12.2.jar:na]
at co.elastic.clients.elasticsearch.synonyms.ElasticsearchSynonymsClient.putSynonymRule(ElasticsearchSynonymsClient.java:302) ~[elasticsearch-java-8.12

Hello and welcome!
This was a known issue where the synonym method only accepted a single String, it was fixed in the latest release (8.13.4) and now it also accepts String arrays as per documentation.

1 Like