# Using Opensearch kNN in Java

**URL:** <https://forum.opensearch.org/t/using-opensearch-knn-in-java/20520>\
**Category:** OpenSearch Client Libraries\
**Tags:** opensearch-java\
**Created:** [July 25, 2024, 10:35am UTC](https://forum.opensearch.org/t/using-opensearch-knn-in-java/20520 "2024-07-25T10:35:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![safakkbilici](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.opensearch.org/safakkbilici/32/7854_2.png) [@safakkbilici](https://forum.opensearch.org/u/safakkbilici)\
**Post date:** [July 25, 2024, 10:35am UTC](https://forum.opensearch.org/t/using-opensearch-knn-in-java/20520/1 "2024-07-25T10:35:48Z")

</div>

**Versions** (relevant - OpenSearch/Dashboard/Server OS/Browser):  
Java 17, Gradle 8.4, OpenSearch 2.15, OpenSearch kNN 2.15

**Describe the issue** :  
Hi everyone, I want to use kNN plugin of OpenSearch in its Java client, however I am not able to use it. I added it as a dependency, it seems that I cannot even import it.

**Configuration** :  
When I import a module in knn, like

```auto
import org.opensearch.knn.index.SpaceType;

```

the error is `Cannot resolve symbol 'knn'`.

**Relevant Logs or Screenshots** :  
The library is shown in External Libraries but not able to import.

 ![Screenshot 2024-07-25 at 3.37.47 PM](https://us1.discourse-cdn.com/flex019/uploads/mauve_hedgehog/original/2X/3/31cb89c607e29170c747cc04aafd19a2e4182764.png)

---

<div class="post-metadata">

**Author:** ![safakkbilici](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.opensearch.org/safakkbilici/32/7854_2.png) [@safakkbilici](https://forum.opensearch.org/u/safakkbilici)\
**Post date:** [July 25, 2024, 2:51pm UTC](https://forum.opensearch.org/t/using-opensearch-knn-in-java/20520/2 "2024-07-25T14:51:19Z")

</div>

For those experiencing the same issue, if you use Gradle, it downloads the library as a `.zip` file. While I am not entirely sure if this resolves the problem, adding unzipping modules seems to help:

```auto
configurations {
	knnZip
}

dependencies {
	knnZip 'org.opensearch.plugin:opensearch-knn:2.15.0.0@zip'
}

task unzipKnn(type: Copy) {
	from zipTree(configurations.knnZip.singleFile)
	into "$buildDir/libs/opensearch-knn"
}

tasks.named('build') {
	dependsOn 'unzipKnn'
}

sourceSets {
	main {
		runtimeClasspath += fileTree(dir: "$buildDir/libs/opensearch-knn", include: '**/*.jar')
	}
}

```

then clean build as `./gradlew clean build`.

---

<div class="post-metadata">

**Author:** ![safakkbilici](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.opensearch.org/safakkbilici/32/7854_2.png) [@safakkbilici](https://forum.opensearch.org/u/safakkbilici)\
**Post date:** [July 26, 2024, 1:56pm UTC](https://forum.opensearch.org/t/using-opensearch-knn-in-java/20520/3 "2024-07-26T13:56:22Z")

</div>

So after a few trials, my solution does not seem to work for me 😃 I downloaded `.jar` file from maven and add it to my projects `libs/`path and then configured my gradle file as this

```auto
repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}

...

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}

```

then clean build.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex019/uploads/mauve_hedgehog/original/2X/3/33547ea01a5b12dcca2958411d3edd97ae2ea8c1.png) [@system](https://forum.opensearch.org/u/system)\
**Post date:** [September 24, 2024, 1:56pm UTC](https://forum.opensearch.org/t/using-opensearch-knn-in-java/20520/4 "2024-09-24T13:56:38Z")

</div>

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