Hello,
About the Java client, I have the same problem as
when I try to use the similarity that I defined in my plugin.
I can create the index template using PUT with curl.
But I have the same exception as #299 if I try to use the java client.
I have Elastic and co.elastic.clients version 8.17.0.
Hello!
I have to investigate a bit more because I was pretty sure the problem was already solved, but it seems like the solution was reversed at some point. I'll get back ASAP.
Here is what I use to reproduce the problem with Elastic 8.17.0 in a container. It works with elastic-simple-bm25.json but doesn't with elastic-simple.json:
Caused by: co.elastic.clients.json.JsonpMappingException: Error deserializing co.elastic.clients.elasticsearch.indices.SettingsSimilarity: Unknown 'type' value: 'nemo-custom' (JSON path: template.settings.index.similarity.my_similarity) (in object at line no=9, column no=29, offset=154)
at co.elastic.clients.json.ObjectDeserializer.lambda$setTypeProperty$0(ObjectDeserializer.java:359)
at co.elastic.clients.json.ObjectDeserializer.parseUnknownField(ObjectDeserializer.java:284)
at co.elastic.clients.json.ObjectDeserializer.deserializeInner(ObjectDeserializer.java:229)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:166)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:157)
at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:77)
at co.elastic.clients.json.BuildFunctionDeserializer.deserialize(BuildFunctionDeserializer.java:47)
at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:43)
at co.elastic.clients.json.JsonpDeserializerBase$StringMapDeserializer.deserialize(JsonpDeserializerBase.java:349)
at co.elastic.clients.json.JsonpDeserializerBase$StringMapDeserializer.deserialize(JsonpDeserializerBase.java:333)
at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:77)
at co.elastic.clients.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:78)
at co.elastic.clients.json.ObjectDeserializer.deserializeInner(ObjectDeserializer.java:214)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:166)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:157)
at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:77)
at co.elastic.clients.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:79)
at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:43)
at co.elastic.clients.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:78)
at co.elastic.clients.json.ObjectDeserializer.deserializeInner(ObjectDeserializer.java:214)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:166)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:157)
at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:77)
at co.elastic.clients.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:79)
at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:43)
at co.elastic.clients.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:78)
at co.elastic.clients.json.ObjectDeserializer.deserializeInner(ObjectDeserializer.java:214)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:166)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:157)
at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:77)
at co.elastic.clients.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:79)
at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:43)
at co.elastic.clients.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:78)
at co.elastic.clients.json.ObjectDeserializer.deserializeInner(ObjectDeserializer.java:214)
at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:166)
at co.elastic.clients.util.WithJsonObjectBuilderBase.withJson(WithJsonObjectBuilderBase.java:54)
at co.elastic.clients.json.WithJson.withJson(WithJson.java:43)
Hello! I can confirm that this is the exact same issue, which was fixed and accidentally reversed shortly after a new fix is ready and it will be merged shortly, hopefully permanently this time. It should be part of the next patch, so 8.17.2
Unfortunately the fix was never released, because of bad timing: it should've been out with 8.13.0, but then the regression was introduced just before the final build. And yes it's still the commonelasticsearch-specification, all clients are generated from it. 8.17.2 should be out around next week, if it takes longer then I'll point you to a snapshot version of it that you will be able to test.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.