# How to integrate knnsearch In java application

**URL:** <https://discuss.elastic.co/t/how-to-integrate-knnsearch-in-java-application/298897>\
**Category:** Elasticsearch\
**Tags:** language-clients\
**Created:** [March 5, 2022, 8:49pm UTC](https://discuss.elastic.co/t/how-to-integrate-knnsearch-in-java-application/298897 "2022-03-05T20:49:44Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![dileepkotte4529](https://avatars.discourse-cdn.com/v4/letter/d/f04885/32.png) [@dileepkotte4529](https://discuss.elastic.co/u/dileepkotte4529)\
**Post date:** [March 5, 2022, 8:49pm UTC](https://discuss.elastic.co/t/how-to-integrate-knnsearch-in-java-application/298897/1 "2022-03-05T20:49:44Z")

</div>

Hi Folks ,  
I was tried knnsearch for vector similarity search in python it worked .But Now i need to integrate that with my spring application , I don't see much resource on it. But i tried with below code

```auto
Elastic Search : 8.0.1
 RestClient restClient = RestClient.builder(
                new HttpHost("localhost", 9200)).build();
        ElasticsearchTransport transport = new RestClientTransport(
                restClient, new JacksonJsonpMapper());
        ElasticsearchClient client = new ElasticsearchClient(transport);
 KnnSearchQuery query = new KnnSearchQuery.Builder().field("image-vector").k(1).numCandidates(100).queryVector(v).build();
        KnnSearchRequest request = new KnnSearchRequest.Builder().knn(query).index("image_similarity_1million").fields("humanid").build();
   client.knnSearch(request,RequestOptions.DEFAULT);

```

But i am getting exceptions

```auto
Exception in thread "main" jakarta.json.JsonException: Jackson exception
	at co.elastic.clients.json.jackson.JacksonUtils.convertException(JacksonUtils.java:39)
	at co.elastic.clients.json.jackson.JacksonJsonpMapper$JacksonValueParser.deserialize(JacksonJsonpMapper.java:113)
	at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:75)
	at co.elastic.clients.json.JsonpMapperBase.deserialize(JsonpMapperBase.java:41)
	at co.elastic.clients.json.AttributedJsonpMapper.deserialize(AttributedJsonpMapper.java:45)
	at co.elastic.clients.json.JsonpDeserializer$1.deserialize(JsonpDeserializer.java:98)
	at co.elastic.clients.json.NamedDeserializer.deserialize(NamedDeserializer.java:64)
	at co.elastic.clients.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:72)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:176)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:137)
	at co.elastic.clients.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:85)
	at co.elastic.clients.json.JsonpDeserializerBase$ArrayDeserializer.deserialize(JsonpDeserializerBase.java:320)
	at co.elastic.clients.json.JsonpDeserializerBase$ArrayDeserializer.deserialize(JsonpDeserializerBase.java:285)
	at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:75)
	at co.elastic.clients.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:72)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:176)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:137)
	at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:75)
	at co.elastic.clients.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:79)
	at co.elastic.clients.json.ObjectDeserializer$FieldObjectDeserializer.deserialize(ObjectDeserializer.java:72)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:176)
	at co.elastic.clients.json.ObjectDeserializer.deserialize(ObjectDeserializer.java:137)
	at co.elastic.clients.json.JsonpDeserializer.deserialize(JsonpDeserializer.java:75)
	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.transport.endpoints.EndpointWithResponseMapperAttr$1.deserialize(EndpointWithResponseMapperAttr.java:56)
	at co.elastic.clients.transport.rest_client.RestClientTransport.decodeResponse(RestClientTransport.java:328)
	at co.elastic.clients.transport.rest_client.RestClientTransport.getHighLevelResponse(RestClientTransport.java:294)
	at co.elastic.clients.transport.rest_client.RestClientTransport.performRequest(RestClientTransport.java:147)
	at co.elastic.clients.elasticsearch.ElasticsearchClient.knnSearch(ElasticsearchClient.java:1010)
	at Elastic.main(Elastic.java:37)
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `HUMAN` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
 at [Source: (org.apache.http.nio.entity.ContentInputStream); line: 1, column: 250]
	at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67)
	at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1764)
	at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400)
	at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1209)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1400)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:362)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:195)
	at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322)
	at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:4569)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2798)
	at co.elastic.clients.json.jackson.JacksonJsonpMapper$JacksonValueParser.deserialize(JacksonJsonpMapper.java:111)
	... 29 more

```

please help me out.

---

<div class="post-metadata">

**Author:** ![Julie\_Tibshirani](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/julie_tibshirani/32/55628_2.png) [@Julie\_Tibshirani](https://discuss.elastic.co/u/Julie_Tibshirani)\
**Post date:** [March 9, 2022, 6:32pm UTC](https://discuss.elastic.co/t/how-to-integrate-knnsearch-in-java-application/298897/2 "2022-03-09T18:32:54Z")

</div>

Hi @dileepkotte4529 , great that you are trying out the kNN search API. I am not a Spring expert, so apologies if this is not helpful, but it looks like one of your classes called HUMAN is missing some methods required to construct it:

```auto
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `HUMAN` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)

```

I don't see any Elasticsearch-specific issues in the stack trace.

Julie

---

<div class="post-metadata">

**Author:** ![swallez](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/swallez/32/11972_2.png) [@swallez](https://discuss.elastic.co/u/swallez)\
**Post date:** [March 10, 2022, 10:20am UTC](https://discuss.elastic.co/t/how-to-integrate-knnsearch-in-java-application/298897/3 "2022-03-10T10:20:28Z")

</div>

This line is a High Level Rest Client call: `client.knnSearch(request,RequestOptions.DEFAULT);`

I guess your actual code is more like `client.knnSearch(request, SomeDocumentClass.class);` where `SomeApplicationClass` is the type to use to deserialize documents returned by the search request.

The error indicates that Jackson is unable to create an instance of `HUMAN`. What does the definition of your `SomeDocumentClass` look like?

---

<div class="post-metadata">

**Author:** ![dileepkotte4529](https://avatars.discourse-cdn.com/v4/letter/d/f04885/32.png) [@dileepkotte4529](https://discuss.elastic.co/u/dileepkotte4529)\
**Post date:** [March 10, 2022, 10:45am UTC](https://discuss.elastic.co/t/how-to-integrate-knnsearch-in-java-application/298897/4 "2022-03-10T10:45:19Z")

</div>

Yeah ! Actually I fixed that day itself . Thank you for response @swallez @Julie_Tibshirani

---

<div class="post-metadata">

**Author:** ![swallez](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/swallez/32/11972_2.png) [@swallez](https://discuss.elastic.co/u/swallez)\
**Post date:** [March 10, 2022, 2:33pm UTC](https://discuss.elastic.co/t/how-to-integrate-knnsearch-in-java-application/298897/5 "2022-03-10T14:33:11Z")

</div>

Awesome! Thanks for the update @dileepkotte4529!

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [April 7, 2022, 2:33pm UTC](https://discuss.elastic.co/t/how-to-integrate-knnsearch-in-java-application/298897/6 "2022-04-07T14:33:27Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
