diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index d19e182d..00000000 --- a/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -indent_style = tab -indent_size = 4 - -[*.{md,markdown,json,js,xml,yml}] -indent_style = space -indent_size = 2 - -[*.{md,markdown}] -trim_trailing_whitespace = false -max_line_length = 80 - -[*.{sh,bat,ps1}] -trim_trailing_whitespace = true -insert_final_newline = true diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 3776e59c..00000000 --- a/.gitattributes +++ /dev/null @@ -1,11 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto eol=lf - -# Set default behavior for command prompt diff. -# This gives output on command line taking java language constructs into consideration (e.g showing class name) -*.java text diff=java - -# Set windows specific files explicitly to crlf line ending -*.cmd eol=crlf -*.bat eol=crlf -*.ps1 eol=crlf \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index c89f637b..00000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,36 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "gradle" - directory: "/" - schedule: - interval: "weekly" - open-pull-requests-limit: 5 - groups: - security-updates: - applies-to: security-updates - patterns: - - "*" - version-updates: - applies-to: version-updates - update-types: - - "minor" - - "patch" - patterns: - - "*" - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "weekly" - open-pull-requests-limit: 5 - groups: - security-updates: - applies-to: security-updates - patterns: - - "*" - version-updates: - applies-to: version-updates - update-types: - - "minor" - - "patch" - patterns: - - "*" diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml deleted file mode 100644 index 0995e903..00000000 --- a/.github/workflows/cd.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Build and Deploy - -on: - workflow_dispatch: - push: - tags: - - 'v*' - -permissions: - contents: write - checks: write - -jobs: - build: - name: Build - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - - name: Set up JDK 21 - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 - with: - java-version: '21' - distribution: 'temurin' - - - name: Set Docker API version - run: echo "api.version=1.44" > $HOME/.docker-java.properties - - - name: Build - uses: gradle/gradle-build-action@ac2d340dc04d9e1113182899e983b5400c17cda1 # v3.5.0 - with: - gradle-version: 8.5 - arguments: build - - - name: Test - uses: gradle/gradle-build-action@ac2d340dc04d9e1113182899e983b5400c17cda1 # v3.5.0 - with: - gradle-version: 8.5 - arguments: test --info - - - name: Test Results - uses: mikepenz/action-junit-report@3a81627bfac62268172037048872e8ebd4207e6d # v6.4.1 - if: always() - with: - fail_on_failure: true - require_tests: true - report_paths: '**/build/test-results/test/TEST-*.xml' - - - name: Upload Jars - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: QdrantJava - path: build/libs - - publish: - runs-on: ubuntu-latest - needs: build - env: - ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGKEYID }} - ORG_GRADLE_PROJECT_signingKey: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGKEY }} - ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGPASSWORD }} - ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEUSERNAME }} - ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEPASSWORD }} - steps: - - name: Checkout - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - - name: Set up JDK 21 - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 - with: - java-version: '21' - distribution: 'temurin' - - - name: Set Docker API version - run: echo "api.version=1.44" > $HOME/.docker-java.properties - - - name: Publish package - uses: gradle/gradle-build-action@ac2d340dc04d9e1113182899e983b5400c17cda1 # v3.5.0 - with: - gradle-version: 8.5 - arguments: publishToSonatype closeAndReleaseSonatypeStagingRepository - - - name: Deploy javadoc to Github Pages - uses: dev-vince/actions-publish-javadoc@4004c6ca5881690e83c49a28a0b16fcab089e860 # v1.0.1 - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - java-version: "21" - java-distribution: "adopt" # The distributor of the target JDK. See https://github.com/actions/setup-java for more information. - project: gradle # The project type. - branch: "gh-pages" # The branch for the javadoc contents. diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 190dcd59..00000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Test - -on: - pull_request: - types: - - opened - - edited - - synchronize - - reopened - -permissions: - contents: write - checks: write - -jobs: - build: - name: Build - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - - name: Set up JDK 21 - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 - with: - java-version: '21' - distribution: 'temurin' - - - name: Set Docker API version - run: echo "api.version=1.44" > $HOME/.docker-java.properties - - - name: Build - uses: gradle/gradle-build-action@ac2d340dc04d9e1113182899e983b5400c17cda1 # v3.5.0 - with: - gradle-version: 8.5 - arguments: build --info - - - name: Test - uses: gradle/gradle-build-action@ac2d340dc04d9e1113182899e983b5400c17cda1 # v3.5.0 - with: - gradle-version: 8.5 - arguments: test --info diff --git a/.gitignore b/.gitignore deleted file mode 100644 index c6509f6d..00000000 --- a/.gitignore +++ /dev/null @@ -1,49 +0,0 @@ -.gradle -build/ -!gradle/wrapper/gradle-wrapper.jar -!**/src/main/**/build/ -!**/src/test/**/build/ - -### IntelliJ IDEA ### -.idea/modules.xml -.idea/jarRepositories.xml -.idea/compiler.xml -.idea/libraries/ -.idea/uiDesigner.xml -.idea/codeStyles/codeStyleConfig.xml -.idea/codeStyles/Project.xml -.idea/inspectionProfiles/Project_Default.xml -*.iws -*.iml -*.ipr -out/ -!**/src/main/**/out/ -!**/src/test/**/out/ - -### Eclipse ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache -bin/ -!**/src/main/**/bin/ -!**/src/test/**/bin/ - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ - -### VS Code ### -.vscode/ - -### Mac OS ### -.DS_Store - -### Project specific ### -protos diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b81..00000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 2a11f8b9..00000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -client \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 0befd1f1..00000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 900119e7..00000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1ddf..00000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 7f4db1e3..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,136 +0,0 @@ -# Contributing to Java client for Qdrant - -We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's: - -- Reporting a bug -- Discussing the current state of the code -- Submitting a fix -- Proposing new features - -## We Develop with GitHub - -We use GitHub to host code, to track issues and feature requests, as well as accept pull requests. - -We Use [GitHub Flow](https://docs.github.com/en/get-started/quickstart/github-flow), so all code changes -happen through Pull Requests. Pull requests are the best way to propose changes to the codebase. - -It's usually best to open an issue first to discuss a feature or bug before opening a pull request. -Doing so can save time and help further ascertain the crux of an issue. - -1. See if there is an existing issue -2. Fork the repo and create your branch from `master`. -3. If you've added code that should be tested, add tests. -4. Ensure the test suite passes. -5. Issue that pull request! - -### Any contributions you make will be under the Apache License 2.0 - -In short, when you submit code changes, your submissions are understood to be under the -same [Apache License 2.0](https://choosealicense.com/licenses/apache-2.0/) that covers the project. -Feel free to contact the maintainers if that's a concern. - -## Report bugs using GitHub's [issues](https://github.com/qdrant/java-client/issues) - -We use GitHub issues to track public bugs. Report a bug by -[opening a new issue](https://github.com/qdrant/java-client/issues/new); it's that easy! - -**Great Bug Reports** tend to have: - -- A quick summary and/or background -- Steps to reproduce - - Be specific! - - Give sample code if you can. -- What you expected would happen -- What actually happens -- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work) - -## Coding Styleguide - -If you are modifying code, make sure it has no warnings when building. - -## License - -By contributing, you agree that your contributions will be licensed under its Apache License 2.0. - -## Preparing for a New Release - -The client uses generated stubs from upstream Qdrant proto definitions, which are downloaded from [qdrant/qdrant](https://github.com/qdrant/qdrant/tree/master/lib/api/src/grpc/proto). - -The generated files do not form part of the checked-in source code. Instead, they are generated -and emitted into the `build/generated/source directory`, and included in compilation. - -### Pre-requisites - -Ensure the following are installed and available in the `PATH`. - -- [Java 21](https://www.azul.com/downloads/?version=java-21-lts&package=jdk#zulu) -- [Gradle](https://gradle.org/install/#with-a-package-manager). -- [Docker](https://docs.docker.com/engine/install/) for tests. - -If you're using IntelliJ IDEA, see [this section](#intellij-idea) for steps to handle an IntelliSense issue. - -### Steps - -1. Update the values in [gradle.properties](https://github.com/qdrant/java-client/blob/master/gradle.properties) as follows: - -- `packageVersion` - Bump it to the next minor version to be released. -- `qdrantVersion` - Set it to `dev` to use the `dev` Docker image for testing. -- `qdrantProtosVersion` - Set it to `dev` to use the `dev` branch for fetching the proto files. - -2. Download and generate the latest client stubs by running the following command from the project root: - -For Windows - -```bash -.\gradlew.bat build -``` - -For OSX/Linux - -```bash -./gradlew build -``` - -This will - -- Pull down all the dependencies for the build process and the project. -- Run the default build task. -- Run the integration tests. Ensure Docker running. - -If a Qdrant image with static tags like `dev` or `latest` already exists on your system, the tests will use it. You can remove these images before running the tests to fetch the most up-to-date versions. - -3. Implement new Qdrant methods in [`QdrantClient.java`](https://github.com/qdrant/java-client/blob/master/src/main/java/io/qdrant/client/QdrantClient.java) with associated tests in [src/test](https://github.com/qdrant/java-client/tree/master/src/test/java/io/qdrant/client). - -Since the API reference is published at , the docstrings have to be appropriate. - -4. If there are any new complex/frequently used properties in the proto definitions, add factory classes in [`src/main`](https://github.com/qdrant/java-client/tree/master/src/main/java/io/qdrant/client) following the existing patterns. - -5. Submit your pull request and get those approvals. - -### Releasing a New Version - -Once the new Qdrant version is live: - -1. Update the values in [gradle.properties](https://github.com/qdrant/java-client/blob/master/gradle.properties) as follows and build as mentioned above: - -- `qdrantVersion` - Set it to the released Docker image version for testing. -- `qdrantProtosVersion` - Set it to the released version of the Qdrant source for fetching the proto files. -- Update the package version references in `README.md` and `example/build.gradle`. - -2. Merge the pull request. - -3. Publish a new release at . The CI will then publish the library to [mvnrepository.com/artifact/io.qdrant/client](https://mvnrepository.com/artifact/io.qdrant/client) and the docs to . - -### IntelliJ IDEA - -If you're using [IntelliJ IDEA](https://www.jetbrains.com/idea/), IntelliSense may fail to work correctly due to large source files generated from proto-definitions. - -To resolve this, you can increase the file size limit by configuring IntelliJ IDEA as follows: - -1. In the top menu, navigate to `Help` -> `Edit Custom Properties`. - -2. Set the `idea.max.intellisense.filesize` properly to a higher value. - -![Screenshot 2024-10-02 at 11 13 06 PM](https://github.com/user-attachments/assets/7830d22c-4b63-4a03-8a8b-fbdd7acf3454) - -3. After saving the changes, restart the IDE to apply the new file size limit. diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 261eeb9e..00000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/README.md b/README.md deleted file mode 100644 index 90f9c244..00000000 --- a/README.md +++ /dev/null @@ -1,195 +0,0 @@ -

- - - - Qdrant - -   - Java - -

- -

- Java library for the Qdrant vector search engine. -

- -

- Javadoc - Tests - Apache 2.0 License - Discord - Roadmap 2024 -

- -# Qdrant Java Client - -Java client library with handy utility methods and overloads for interfacing with [Qdrant](https://qdrant.tech/). - -## 📥 Installation - -> [!IMPORTANT] -> Requires Java 8 or above. - -To install the library, add the following lines to your build config file. - -#### Maven - -```xml - - io.qdrant - client - 1.18.1 - -``` - -#### SBT - -```sbt -libraryDependencies += "io.qdrant" % "client" % "1.18.1" -``` - -#### Gradle - -```gradle -implementation 'io.qdrant:client:1.18.1' -``` - -> [!NOTE] -> Please make sure to include all necessary dependencies listed [here](https://central.sonatype.com/artifact/io.qdrant/client/dependencies) in your project. - -## 📖 Documentation - -- Usage examples are available throughout the [Qdrant documentation](https://qdrant.tech/documentation/quick-start/) and [API Reference](https://api.qdrant.tech/). -- [JavaDoc Reference](https://qdrant.github.io/java-client/) - -## 🔌 Getting started - -### Creating a client - -A client can be instantiated with - -```java -QdrantClient client = - new QdrantClient(QdrantGrpcClient.newBuilder("localhost").build()); -``` - -which creates a client that will connect to Qdrant on . - -Internally, the high-level client uses a low-level gRPC client to interact with -Qdrant. Additional constructor overloads provide more control over how the gRPC -client is configured. The following example configures a client to use TLS, -validating the certificate using the root CA to verify the server's identity -instead of the system's default, and also configures API key authentication: - -```java -ManagedChannel channel = Grpc.newChannelBuilder( - "localhost:6334", - TlsChannelCredentials.newBuilder() - .trustManager(new File("ssl/ca.crt")) - .build()) -.build(); - -QdrantClient client = new QdrantClient( - QdrantGrpcClient.newBuilder(channel) - .withApiKey("") - .build()); -``` - -The client implements [`AutoCloseable`](https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html), -though a client will typically be created once and used for the lifetime of the -application. When a client is constructed by passing a `ManagedChannel`, the -client does not shut down the channel on close by default. The client can be -configured to shut down the channel on closing with - -```java -ManagedChannel channel = Grpc.newChannelBuilder( - "localhost:6334", - TlsChannelCredentials.create()) -.build(); - -QdrantClient client = new QdrantClient( - QdrantGrpcClient.newBuilder(channel, true) - .withApiKey("") - .build()); -``` - -All client methods return `ListenableFuture`. - -### Working with collections - -Once a client has been created, create a new collection - -```java -client.createCollectionAsync("{collection_name}", - VectorParams.newBuilder() - .setDistance(Distance.Cosine) - .setSize(4) - .build()) - .get(); -``` - -Insert vectors into a collection - -```java -// import static convenience methods -import static io.qdrant.client.PointIdFactory.id; -import static io.qdrant.client.ValueFactory.value; -import static io.qdrant.client.VectorsFactory.vectors; - -List points = - List.of( - PointStruct.newBuilder() - .setId(id(1)) - .setVectors(vectors(0.32f, 0.52f, 0.21f, 0.52f)) - .putAllPayload( - Map.of( - "color", value("red"), - "rand_number", value(32))) - .build(), - PointStruct.newBuilder() - .setId(id(2)) - .setVectors(vectors(0.42f, 0.52f, 0.67f, 0.632f)) - .putAllPayload( - Map.of( - "color", value("black"), - "rand_number", value(53), - "extra_field", value(true))) - .build()); - -UpdateResult updateResult = client.upsertAsync("{collection_name}", points).get(); -``` - -Search for similar vectors - -```java -List points = - client - .searchAsync( - SearchPoints.newBuilder() - .setCollectionName("{collection_name}") - .addAllVector(List.of(0.6235f, 0.123f, 0.532f, 0.123f)) - .setLimit(5) - .build()) - .get(); -``` - -Search for similar vectors with filtering condition - -```java -// import static convenience methods -import static io.qdrant.client.ConditionFactory.range; - -List points = client.searchAsync(SearchPoints.newBuilder() - .setCollectionName("{collection_name}") - .addAllVector(List.of(0.6235f, 0.123f, 0.532f, 0.123f)) - .setFilter(Filter.newBuilder() - .addMust(range("rand_number", Range.newBuilder().setGte(3).build())) - .build()) - .setLimit(5) - .build() -).get(); -``` - -## ⚖️ LICENSE - -[Apache 2.0](https://github.com/qdrant/java-client/blob/master/LICENSE) diff --git a/allclasses-index.html b/allclasses-index.html new file mode 100644 index 00000000..cc38fea5 --- /dev/null +++ b/allclasses-index.html @@ -0,0 +1,156 @@ + + + + +All Classes and Interfaces (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+
+

All Classes and Interfaces

+
+
+
+
+
+
Class
+
Description
+ +
+
Convenience methods for constructing Common.Condition
+
+ +
+
Convenience methods for constructing Points.Expression
+
+ +
+
Used internally by the client to send the API key and any headers as gRPC metadata.
+
+ +
+
Convenience methods for constructing Common.PointId
+
+ +
+
Client for the Qdrant vector database.
+
+ +
+
An exception when interacting with qdrant
+
+ +
+
Low-level gRPC client for qdrant vector database.
+
+ +
+
builder for QdrantGrpcClient
+
+ +
+
Convenience methods for constructing Points.Query
+
+ +
+
Utilities for attaching per-request headers to gRPC calls.
+
+ +
+
Convenience methods for constructing Collections.ShardKey
+
+ +
+
Convenience methods for constructing Points.ShardKeySelector
+
+ +
+
Convenience methods for constructing Points.StartFrom
+
+ +
+
Convenience methods for constructing Points.TargetVector
+
+ +
+
Convenience methods for constructing JsonWithInt.Value
+
+ +
+
Convenience methods for constructing Points.Vector
+
+ +
+
Convenience methods for constructing Points.VectorInput
+
+ +
+
Helper methods for extracting vector data from Points.VectorOutput.
+
+ +
+
Convenience methods for constructing Points.Vectors
+
+ +
+
Utility class to check compatibility between server's and client's versions.
+
+ +
+
Convenience methods for constructing Points.WithPayloadSelector
+
+ +
+
Convenience methods for constructing Points.WithVectorsSelector
+
+
+
+
+
+
+
+ + diff --git a/allpackages-index.html b/allpackages-index.html new file mode 100644 index 00000000..321c6518 --- /dev/null +++ b/allpackages-index.html @@ -0,0 +1,64 @@ + + + + +All Packages (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+
+

All Packages

+
+
Package Summary
+
+
Package
+
Description
+ +
+
package
+
+
+
+
+
+ + diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 76c7f1a8..00000000 --- a/build.gradle +++ /dev/null @@ -1,275 +0,0 @@ -import net.ltgt.gradle.errorprone.CheckSeverity -import org.ajoberstar.grgit.Grgit -import org.apache.commons.compress.archivers.tar.TarArchiveEntry -import org.apache.commons.compress.archivers.tar.TarArchiveInputStream -import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream -import org.apache.http.client.methods.HttpGet -import org.apache.http.impl.client.HttpClients - -import java.nio.file.Files -import java.nio.file.Paths -import java.nio.file.StandardOpenOption -import java.time.ZoneOffset -import java.util.regex.Pattern - -plugins { - id 'java-library' - id 'idea' - id 'signing' - id 'maven-publish' - - id 'com.google.protobuf' version '0.10.0' - id 'net.ltgt.errorprone' version '5.1.0' - id 'io.github.gradle-nexus.publish-plugin' version '2.0.0' - id 'com.diffplug.spotless' version '8.6.0' -} - -group = 'io.qdrant' -version = packageVersion -description = 'Official Java client for Qdrant vector database' - -repositories { - // google mirror for maven - maven { - url 'https://maven-central.storage-download.googleapis.com/maven2/' - } - mavenCentral() - mavenLocal() -} - -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - - withJavadocJar() - withSourcesJar() -} - -tasks.withType(JavaCompile).configureEach { - // exclude generated code from error prone checks - options.errorprone.excludedPaths.set(".*/build/generated/.*") - options.errorprone { - //noinspection GroovyAssignabilityCheck - check("NullAway", CheckSeverity.ERROR) - option("NullAway:AnnotatedPackages", "com.uber") - } -} - -javadoc { - // exclude code generated from protos - exclude 'io/qdrant/client/grpc/**' - exclude 'grpc/**' -} - -sourcesJar { - // exclude generated duplicate of com/qdrant/client/grpc/CollectionsGrpc.java - duplicatesStrategy = DuplicatesStrategy.EXCLUDE -} - -jar { - doFirst { - def git = Grgit.open(Map.of('currentDir', rootProject.rootDir)) - // add qdrant version from which client is generated. - jar.manifest.attributes['X-Qdrant-Version'] = qdrantProtosVersion - // add git revision and commit time to jar manifest - jar.manifest.attributes['X-Git-Revision'] = git.head().id - jar.manifest.attributes['X-Git-Commit-Time'] = git.head().dateTime.withZoneSameLocal(ZoneOffset.UTC) - jar.manifest.attributes['Implementation-Version'] = packageVersion - git.close() - } -} - -def grpcVersion = '1.82.0' -def protocVersion = '3.25.5' -def slf4jVersion = '2.0.18' -def testcontainersVersion = '1.21.4' -def jUnitVersion = '6.1.0' - -dependencies { - errorprone "com.uber.nullaway:nullaway:0.13.6" - - api "io.grpc:grpc-protobuf:${grpcVersion}" - api "io.grpc:grpc-stub:${grpcVersion}" - implementation "org.slf4j:slf4j-api:${slf4jVersion}" - - compileOnly "org.apache.tomcat:annotations-api:6.0.53" - - errorprone "com.google.errorprone:error_prone_core:2.50.0" - - runtimeOnly "io.grpc:grpc-netty-shaded:${grpcVersion}" - - testImplementation "io.grpc:grpc-testing:${grpcVersion}" - testImplementation "org.junit.jupiter:junit-jupiter-api:${jUnitVersion}" - testImplementation "org.junit.jupiter:junit-jupiter-params:${jUnitVersion}" - testImplementation "org.mockito:mockito-core:5.23.0" - testImplementation "org.slf4j:slf4j-nop:${slf4jVersion}" - testImplementation "org.testcontainers:qdrant:${testcontainersVersion}" - testImplementation "org.testcontainers:junit-jupiter:${testcontainersVersion}" - - testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${jUnitVersion}" - testRuntimeOnly "org.junit.platform:junit-platform-launcher:${jUnitVersion}" -} - -tasks.register('downloadProtos') { - // gradle detects changes to this output dir since last run to determine whether to run this task - outputs.dir(new File(rootProject.rootDir, "protos/${qdrantProtosVersion}")) - - doLast { - def outputDirectory = outputs.files.singleFile.toPath().toString() - def protoFileRegex = Pattern.compile(".*?lib/api/src/grpc/proto/.*?.proto") - try (def httpClient = HttpClients.createDefault()) { - def url = "https://api.github.com/repos/qdrant/qdrant/tarball/${qdrantProtosVersion}" - logger.debug("downloading protos from {}", url) - def response = httpClient.execute(new HttpGet(url)) - try (InputStream tarballStream = response.getEntity().getContent()) { - try (TarArchiveInputStream tarInput = new TarArchiveInputStream(new GzipCompressorInputStream(tarballStream))) { - TarArchiveEntry entry - while ((entry = tarInput.getNextTarEntry()) != null) { - if (!entry.isDirectory() && protoFileRegex.matcher(entry.getName()).matches()) { - def lines = new ArrayList() - def lineNum = -1 - def seenJavaPackage = false - def br = new BufferedReader(new InputStreamReader(tarInput)) - String line - while ((line = br.readLine()) != null) { - lines.add(line) - if (line == "package qdrant;") { - lineNum = lines.size() - } else if (line.startsWith("option java_package")) { - seenJavaPackage = true - } - } - // patch in java package to qdrant protos - if (!seenJavaPackage && lineNum != -1) { - lines.add(lineNum, "option java_package = \"io.qdrant.client.grpc\";") - } - - def fileName = Paths.get(entry.getName()).getFileName().toString() - def dest = java.nio.file.Path.of(outputDirectory, fileName) - logger.debug("writing {} to {}", fileName, dest) - Files.write(dest, lines, StandardOpenOption.CREATE) - } - } - } - } - } - } -} - -processResources { - dependsOn downloadProtos -} - -extractIncludeProto { - dependsOn downloadProtos -} - -processProtoResources { - dependsOn downloadProtos -} - -protobuf { - protoc { artifact = "com.google.protobuf:protoc:${protocVersion}" } - plugins { - grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" } - } - generateProtoTasks { - all()*.plugins { grpc {} } - } -} - -// Inform IDEs like IntelliJ IDEA, Eclipse or NetBeans about the generated code. -sourceSets { - main { - proto { - // include protos from outside the sourceSets - //noinspection GroovyAssignabilityCheck - srcDir "protos/${qdrantProtosVersion}" - } - java { - srcDirs 'build/generated/source/proto/main/grpc' - srcDirs 'build/generated/source/proto/main/java' - } - } -} - -// JUnit 6 requires Java 17, while the library itself targets Java 8 -compileTestJava { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} - -test { - useJUnitPlatform() - - // Set system property to use as docker image version for integration tests - systemProperty 'qdrantVersion', qdrantVersion -} - -def organization = 'qdrant' -def repository = 'java-client' - -publishing { - publications { - mavenJava(MavenPublication) { - from components.java - pom { - name = "Qdrant Java Client" - description = "${project.description}" - url = "https://github.com/${organization}/${repository}" - licenses { - license { - name = 'The Apache License, Version 2.0' - url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' - distribution = 'repo' - } - } - developers { - developer { - id = 'qdrant' - name = 'Qdrant and Contributors' - email = 'info@qdrant.com' - } - } - scm { - connection = "scm:git:git://github.com/${organization}/${repository}.git" - developerConnection = "scm:git:ssh://github.com/${organization}/${repository}.git" - url = "https://github.com/${organization}/${repository}" - } - } - } - } - repositories { - mavenLocal() - } -} - -nexusPublishing { - repositories { - sonatype { - nexusUrl = uri("https://ossrh-staging-api.central.sonatype.com/service/local/") - snapshotRepositoryUrl = uri("https://central.sonatype.com/repository/maven-snapshots/") - } - } -} - -signing { - def signingKeyId = findProperty("signingKeyId") - def signingKey = findProperty("signingKey") - def signingPassword = findProperty("signingPassword") - useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword) - sign publishing.publications.mavenJava -} - -spotless { - java { - target 'src/*/java/**/*.java' - importOrder() - removeUnusedImports() - cleanthat() - googleJavaFormat() - formatAnnotations() - } -} - -compileJava.dependsOn 'spotlessApply' diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle deleted file mode 100644 index 1f6020f3..00000000 --- a/buildSrc/build.gradle +++ /dev/null @@ -1,9 +0,0 @@ -dependencies { - implementation 'org.ajoberstar.grgit:grgit-gradle:5.3.3' - implementation 'org.apache.httpcomponents:httpclient:4.5.14' - implementation 'org.apache.commons:commons-compress:1.28.0' -} - -repositories { - mavenCentral() -} \ No newline at end of file diff --git a/element-list b/element-list new file mode 100644 index 00000000..c30c1ec8 --- /dev/null +++ b/element-list @@ -0,0 +1 @@ +io.qdrant.client diff --git a/example/.dockerignore b/example/.dockerignore deleted file mode 100644 index 50a2800e..00000000 --- a/example/.dockerignore +++ /dev/null @@ -1,8 +0,0 @@ -.git -.gradle -build/ -!build/libs/*.jar -*.md -gradlew -gradlew.bat -gradle/ diff --git a/example/Dockerfile b/example/Dockerfile deleted file mode 100644 index 46bad08a..00000000 --- a/example/Dockerfile +++ /dev/null @@ -1,35 +0,0 @@ -# Use OpenJDK 11 as base image -FROM eclipse-temurin:11-jdk AS build - -# Set working directory -WORKDIR /app - -# Install Gradle -RUN apt-get update && \ - apt-get install -y wget unzip && \ - wget https://services.gradle.org/distributions/gradle-8.4-bin.zip && \ - unzip gradle-8.4-bin.zip && \ - rm gradle-8.4-bin.zip && \ - mv gradle-8.4 /opt/gradle && \ - ln -s /opt/gradle/bin/gradle /usr/local/bin/gradle && \ - apt-get remove -y wget unzip && \ - apt-get autoremove -y && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - -# Copy source code and build files -COPY . . - -# Build the application fat jar -RUN gradle --no-daemon clean shadowJar - -# Create a runtime image -FROM eclipse-temurin:11-jre - -WORKDIR /app - -# Copy the built JAR from the build stage (versioned shaded jar) -COPY --from=build /app/build/libs/app-*-all.jar /app/app.jar - -# Set the entrypoint -ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/example/README.md b/example/README.md deleted file mode 100644 index 9239215f..00000000 --- a/example/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Simple Qdrant Client Example - -This is a simple Java application that demonstrates how to interact with a Qdrant vector database server using the official Qdrant Java client. - -## Prerequisites - -- Docker installed on your system - -## Quick Start - -### 1. Start Qdrant - -First, make sure Qdrant is running. You can start it with Docker: - -```bash -docker run --rm -it -p 6334:6334 -p 6333:6333 qdrant/qdrant -``` - -### 2. Building and Running - -```bash -bash -x build-and-run.sh -``` diff --git a/example/build-and-run.sh b/example/build-and-run.sh deleted file mode 100644 index 0d99a91b..00000000 --- a/example/build-and-run.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -docker build -t qdrant-simple-example . - -docker run --rm -it --network host qdrant-simple-example diff --git a/example/build.gradle b/example/build.gradle deleted file mode 100644 index 20774f7b..00000000 --- a/example/build.gradle +++ /dev/null @@ -1,52 +0,0 @@ -plugins { - id 'java' - id 'application' - id 'com.github.johnrengelman.shadow' version '8.1.1' -} - -group = 'io.qdrant.example' -version = '1.0.0' - -repositories { - mavenCentral() -} - -dependencies { - // Qdrant Java client - implementation 'io.qdrant:client:1.18.1' - - // gRPC dependencies - use the same version as Qdrant client - implementation 'io.grpc:grpc-netty-shaded:1.65.1' - implementation 'io.grpc:grpc-protobuf:1.65.1' - implementation 'io.grpc:grpc-stub:1.65.1' - implementation 'io.grpc:grpc-services:1.65.1' - - // Protobuf runtime - implementation 'com.google.protobuf:protobuf-java:3.25.4' - - // Logging - implementation 'org.slf4j:slf4j-simple:2.0.14' -} - -application { - mainClass = 'io.qdrant.example.QdrantExample' -} - -java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 -} - -// Create a proper fat jar and merge service descriptor files (required by gRPC) -shadowJar { - mergeServiceFiles() - archiveBaseName.set('app') - archiveClassifier.set('all') -} - -// Keep the plain jar minimal (no dependency unpacking) -jar { - manifest { - attributes 'Main-Class': 'io.qdrant.example.QdrantExample' - } -} diff --git a/example/gradle.properties b/example/gradle.properties deleted file mode 100644 index 8c838a5c..00000000 --- a/example/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 -org.gradle.parallel=true -org.gradle.caching=true diff --git a/example/src/main/java/io/qdrant/example/QdrantExample.java b/example/src/main/java/io/qdrant/example/QdrantExample.java deleted file mode 100644 index 2c12ca4e..00000000 --- a/example/src/main/java/io/qdrant/example/QdrantExample.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.qdrant.example; - -import io.qdrant.client.QdrantClient; -import io.qdrant.client.QdrantGrpcClient; -import io.qdrant.client.grpc.Collections.VectorParams; -import io.qdrant.client.grpc.Collections.Distance; -import java.util.List; - -public class QdrantExample { - public static void main(String[] args) { - try { - QdrantClient client = new QdrantClient(QdrantGrpcClient.newBuilder("localhost", 6334, false) - .build()); - - // Create a simple collection - String collectionName = "example_collection"; - - if (!client.collectionExistsAsync(collectionName).get()) { - client.createCollectionAsync( - collectionName, - VectorParams.newBuilder() - .setDistance(Distance.Cosine) - .setSize(128) - .build() - ).get(); - } - - List collections = client.listCollectionsAsync().get(); - - for (String collection : collections) { - System.out.println("- " + collection); - } - - client.close(); - - } catch (Exception e) { - System.err.println("Error occurred: " + e.getMessage()); - e.printStackTrace(); - System.exit(1); - } - } -} diff --git a/gradle.properties b/gradle.properties deleted file mode 100644 index 70de5de0..00000000 --- a/gradle.properties +++ /dev/null @@ -1,8 +0,0 @@ -# The version of qdrant to use to download protos -qdrantProtosVersion=v1.18.0 - -# The version of qdrant docker image to run integration tests against -qdrantVersion=v1.18.0 - -# The version of the client to generate -packageVersion=1.18.1 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index b1b8ef56..00000000 Binary files a/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index df6a6ad7..00000000 --- a/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,9 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip -networkTimeout=10000 -retries=0 -retryBackOffMs=500 -validateDistributionUrl=true -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew deleted file mode 100755 index b9bb139f..00000000 --- a/gradlew +++ /dev/null @@ -1,248 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat deleted file mode 100644 index aa5f10b0..00000000 --- a/gradlew.bat +++ /dev/null @@ -1,82 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem -@rem SPDX-License-Identifier: Apache-2.0 -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables, and ensure extensions are enabled -setlocal EnableExtensions - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -"%COMSPEC%" /c exit 1 - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -"%COMSPEC%" /c exit 1 - -:execute -@rem Setup the command line - - - -@rem Execute Gradle -@rem endlocal doesn't take effect until after the line is parsed and variables are expanded -@rem which allows us to clear the local environment before executing the java command -endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel - -:exitWithErrorLevel -@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts -"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/help-doc.html b/help-doc.html new file mode 100644 index 00000000..cac7f463 --- /dev/null +++ b/help-doc.html @@ -0,0 +1,174 @@ + + + + +API Help (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+

JavaDoc Help

+ +
+
+

Navigation

+Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces + +
+
+
+

Kinds of Pages

+The following sections describe the different kinds of pages in this collection. +
+

Package

+

Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:

+
    +
  • Interfaces
  • +
  • Classes
  • +
  • Enum Classes
  • +
  • Exceptions
  • +
  • Errors
  • +
  • Annotation Interfaces
  • +
+
+
+

Class or Interface

+

Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.

+
    +
  • Class Inheritance Diagram
  • +
  • Direct Subclasses
  • +
  • All Known Subinterfaces
  • +
  • All Known Implementing Classes
  • +
  • Class or Interface Declaration
  • +
  • Class or Interface Description
  • +
+
+
    +
  • Nested Class Summary
  • +
  • Enum Constant Summary
  • +
  • Field Summary
  • +
  • Property Summary
  • +
  • Constructor Summary
  • +
  • Method Summary
  • +
  • Required Element Summary
  • +
  • Optional Element Summary
  • +
+
+
    +
  • Enum Constant Details
  • +
  • Field Details
  • +
  • Property Details
  • +
  • Constructor Details
  • +
  • Method Details
  • +
  • Element Details
  • +
+

Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.

+

The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

+
+
+

Other Files

+

Packages and modules may contain pages with additional information related to the declarations nearby.

+
+
+

Tree (Class Hierarchy)

+

There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

+
    +
  • When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
  • +
  • When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
  • +
+
+
+

Serialized Form

+

Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.

+
+
+

All Packages

+

The All Packages page contains an alphabetic index of all packages contained in the documentation.

+
+
+

All Classes and Interfaces

+

The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.

+
+
+

Index

+

The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.

+
+
+
+This help file applies to API documentation generated by the standard doclet.
+
+
+ + diff --git a/index-all.html b/index-all.html new file mode 100644 index 00000000..9d2c9f2e --- /dev/null +++ b/index-all.html @@ -0,0 +1,1454 @@ + + + + +Index (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M N O P Q R S T U V W 
All Classes and Interfaces|All Packages|Serialized Form +

A

+
+
abs(Points.Expression) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression representing absolute value.
+
+
applyRequestMetadata(CallCredentials.RequestInfo, Executor, CallCredentials.MetadataApplier) - Method in class io.qdrant.client.MetadataCredentials
+
 
+
+

B

+
+
batchUpdateAsync(Points.UpdateBatchPoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Performs a batch update of points.
+
+
batchUpdateAsync(String, List<Points.PointsUpdateOperation>) - Method in class io.qdrant.client.QdrantClient
+
+
Performs a batch update of points.
+
+
batchUpdateAsync(String, List<Points.PointsUpdateOperation>, Boolean, Points.WriteOrdering, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Performs a batch update of points.
+
+
build() - Method in class io.qdrant.client.QdrantGrpcClient.Builder
+
+
Builds a new instance of QdrantGrpcClient
+
+
+

C

+
+
channel() - Method in class io.qdrant.client.QdrantGrpcClient
+
+
Gets the channel
+
+
clearPayloadAsync(Points.ClearPayloadPoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Removes all payload for the points.
+
+
clearPayloadAsync(String, Common.Filter, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Removes all payload for the filtered points.
+
+
clearPayloadAsync(String, Common.PointId, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Removes all payload for the given id.
+
+
clearPayloadAsync(String, Points.PointsSelector, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Removes all payload for the points.
+
+
clearPayloadAsync(String, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Remove all payload for all points.
+
+
clearPayloadAsync(String, List<Common.PointId>, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Removes all payload for the given ids.
+
+
close() - Method in class io.qdrant.client.QdrantClient
+
 
+
close() - Method in class io.qdrant.client.QdrantGrpcClient
+
 
+
collectionExistsAsync(String) - Method in class io.qdrant.client.QdrantClient
+
+
Check if a collection exists
+
+
collectionExistsAsync(String, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Check if a collection exists
+
+
collections() - Method in class io.qdrant.client.QdrantGrpcClient
+
+
Gets the client for collections
+
+
condition(Common.Condition) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression from a Common.Condition.
+
+
ConditionFactory - Class in io.qdrant.client
+
+
Convenience methods for constructing Common.Condition
+
+
constant(float) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression from a constant.
+
+
context(Points.ContextInput) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query for context search.
+
+
countAsync(String) - Method in class io.qdrant.client.QdrantClient
+
+
Count the points in a collection.
+
+
countAsync(String, Common.Filter, Boolean) - Method in class io.qdrant.client.QdrantClient
+
+
Count the points in a collection with the given filtering conditions.
+
+
countAsync(String, Common.Filter, Boolean, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Count the points in a collection with the given filtering conditions.
+
+
countAsync(String, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Count the points in a collection.
+
+
createAliasAsync(String, String) - Method in class io.qdrant.client.QdrantClient
+
+
Creates an alias for a given collection.
+
+
createAliasAsync(String, String, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Creates an alias for a given collection.
+
+
createCollectionAsync(Collections.CreateCollection) - Method in class io.qdrant.client.QdrantClient
+
+
Creates a new collection with the given parameters
+
+
createCollectionAsync(Collections.CreateCollection, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Creates a new collection with the given parameters
+
+
createCollectionAsync(String, Collections.VectorParams) - Method in class io.qdrant.client.QdrantClient
+
+
Creates a new collection with the given parameters
+
+
createCollectionAsync(String, Collections.VectorParams, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Creates a new collection with the given parameters
+
+
createCollectionAsync(String, Map<String, Collections.VectorParams>) - Method in class io.qdrant.client.QdrantClient
+
+
Creates a new collection with the given parameters
+
+
createCollectionAsync(String, Map<String, Collections.VectorParams>, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Creates a new collection with the given parameters
+
+
createFullSnapshotAsync() - Method in class io.qdrant.client.QdrantClient
+
+
Create snapshot for a whole storage.
+
+
createFullSnapshotAsync(Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Create snapshot for a whole storage.
+
+
createPayloadIndexAsync(Points.CreateFieldIndexCollection, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Creates a payload field index in a collection.
+
+
createPayloadIndexAsync(String, String, Collections.PayloadSchemaType, Collections.PayloadIndexParams, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Creates a payload field index in a collection.
+
+
createShardKeyAsync(Collections.CreateShardKeyRequest) - Method in class io.qdrant.client.QdrantClient
+
+
Creates a shard key for a collection.
+
+
createShardKeyAsync(Collections.CreateShardKeyRequest, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Creates a shard key for a collection.
+
+
createSnapshotAsync(String) - Method in class io.qdrant.client.QdrantClient
+
+
Create snapshot for a given collection.
+
+
createSnapshotAsync(String, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Create snapshot for a given collection.
+
+
createVectorNameAsync(Points.CreateVectorNameRequest) - Method in class io.qdrant.client.QdrantClient
+
+
Creates a new named vector on a collection.
+
+
createVectorNameAsync(Points.CreateVectorNameRequest, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Creates a new named vector on a collection.
+
+
+

D

+
+
datetime(String) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression from a date-time constant string.
+
+
datetimeKey(String) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression from a payload key referencing date-time values.
+
+
datetimeRange(String, Common.DatetimeRange) - Static method in class io.qdrant.client.ConditionFactory
+
+
Matches records where the given field has a datetime value within the specified range
+
+
deleteAliasAsync(String) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes an alias.
+
+
deleteAliasAsync(String, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes an alias.
+
+
deleteAsync(Points.DeletePoints) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes points.
+
+
deleteAsync(Points.DeletePoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes points.
+
+
deleteAsync(String, Common.Filter) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes points.
+
+
deleteAsync(String, Common.Filter, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes points.
+
+
deleteAsync(String, List<Common.PointId>) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes points.
+
+
deleteAsync(String, List<Common.PointId>, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes points.
+
+
deleteCollectionAsync(String) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes a collection and all its associated data.
+
+
deleteCollectionAsync(String, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes a collection and all its associated data.
+
+
deleteFullSnapshotAsync(String) - Method in class io.qdrant.client.QdrantClient
+
+
Delete snapshot for a whole storage.
+
+
deleteFullSnapshotAsync(String, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Delete snapshot for a whole storage.
+
+
deletePayloadAsync(Points.DeletePayloadPoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Delete specified key payload for the points.
+
+
deletePayloadAsync(String, List<String>, Common.Filter, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Delete specified key payload for the filtered points.
+
+
deletePayloadAsync(String, List<String>, Common.PointId, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Delete specified key payload for the given id.
+
+
deletePayloadAsync(String, List<String>, Points.PointsSelector, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Delete specified key payload for the points.
+
+
deletePayloadAsync(String, List<String>, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Delete specified key payload for all points.
+
+
deletePayloadAsync(String, List<String>, List<Common.PointId>, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Delete specified key payload for the given ids.
+
+
deletePayloadIndexAsync(String, String, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes a payload field index in a collection.
+
+
deleteShardKeyAsync(Collections.DeleteShardKeyRequest) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes a shard key for a collection.
+
+
deleteShardKeyAsync(Collections.DeleteShardKeyRequest, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes a shard key for a collection.
+
+
deleteSnapshotAsync(String, String) - Method in class io.qdrant.client.QdrantClient
+
+
Delete snapshot for a given collection.
+
+
deleteSnapshotAsync(String, String, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Delete snapshot for a given collection.
+
+
deleteVectorNameAsync(Points.DeleteVectorNameRequest) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes a named vector from a collection.
+
+
deleteVectorNameAsync(Points.DeleteVectorNameRequest, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes a named vector from a collection.
+
+
deleteVectorsAsync(Points.DeletePointVectors, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Delete named vectors for points.
+
+
deleteVectorsAsync(String, List<String>, Common.Filter) - Method in class io.qdrant.client.QdrantClient
+
+
Delete named vectors for points.
+
+
deleteVectorsAsync(String, List<String>, Common.Filter, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Delete named vectors for points.
+
+
deleteVectorsAsync(String, List<String>, Common.Filter, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Delete named vectors for points.
+
+
deleteVectorsAsync(String, List<String>, Points.PointsSelector, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Delete named vectors for points.
+
+
deleteVectorsAsync(String, List<String>, List<Common.PointId>) - Method in class io.qdrant.client.QdrantClient
+
+
Delete named vectors for points.
+
+
deleteVectorsAsync(String, List<String>, List<Common.PointId>, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Delete named vectors for points.
+
+
deleteVectorsAsync(String, List<String>, List<Common.PointId>, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Delete named vectors for points.
+
+
discover(Points.DiscoverInput) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query for discovery.
+
+
discoverAsync(Points.DiscoverPoints) - Method in class io.qdrant.client.QdrantClient
+
+
Use the context and a target to find the most similar points to the target.
+
+
discoverAsync(Points.DiscoverPoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Use the context and a target to find the most similar points to the target.
+
+
discoverBatchAsync(String, List<Points.DiscoverPoints>, Points.ReadConsistency) - Method in class io.qdrant.client.QdrantClient
+
+
Use the context and a target to find the most similar points to the target in a batch.
+
+
discoverBatchAsync(String, List<Points.DiscoverPoints>, Points.ReadConsistency, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Use the context and a target to find the most similar points to the target in a batch.
+
+
div(Points.DivExpression) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression that divides values.
+
+
+

E

+
+
enable(boolean) - Static method in class io.qdrant.client.WithPayloadSelectorFactory
+
+
Whether to include all payload in response.
+
+
enable(boolean) - Static method in class io.qdrant.client.WithVectorsSelectorFactory
+
+
Whether to include vectors in response.
+
+
exclude(List<String>) - Static method in class io.qdrant.client.WithPayloadSelectorFactory
+
+
Which payload fields to exclude in response.
+
+
exp(Points.Expression) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression representing exponential.
+
+
expDecay(Points.DecayParamsExpression) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression representing exponential decay.
+
+
ExpressionFactory - Class in io.qdrant.client
+
+
Convenience methods for constructing Points.Expression
+
+
+

F

+
+
facetAsync(Points.FacetCounts) - Method in class io.qdrant.client.QdrantClient
+
+
Perform facet counts.
+
+
facetAsync(Points.FacetCounts, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Perform facet counts.
+
+
filter(Common.Filter) - Static method in class io.qdrant.client.ConditionFactory
+
+
Nests a filter
+
+
formula(Points.Formula) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query for score boosting using an arbitrary formula.
+
+
fusion(Points.Fusion) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query for pre-fetch results fusion.
+
+
+

G

+
+
gaussDecay(Points.DecayParamsExpression) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression representing Gaussian decay.
+
+
geoBoundingBox(String, double, double, double, double) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given field has values inside a bounding box specified by the top left + and bottom right coordinates.
+
+
geoDistance(Points.GeoDistance) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression from a Points.GeoDistance.
+
+
geoPolygon(String, Common.GeoLineString, List<Common.GeoLineString>) - Static method in class io.qdrant.client.ConditionFactory
+
+
Matches records where the given field has values inside the provided polygon.
+
+
geoRadius(String, double, double, float) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given field has values inside a circle centred at a given latitude and + longitude with a given radius.
+
+
getCollectionClusterInfoAsync(String) - Method in class io.qdrant.client.QdrantClient
+
+
Gets detailed information about a collection's cluster setup.
+
+
getCollectionClusterInfoAsync(String, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Gets detailed information about a collection's cluster setup.
+
+
getCollectionInfoAsync(String) - Method in class io.qdrant.client.QdrantClient
+
+
Gets detailed information about an existing collection.
+
+
getCollectionInfoAsync(String, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Gets detailed information about an existing collection.
+
+
getDenseVector(Points.VectorOutput) - Static method in class io.qdrant.client.VectorOutputHelper
+
+
Returns the DenseVector from the VectorOutput.
+
+
getMultiVector(Points.VectorOutput) - Static method in class io.qdrant.client.VectorOutputHelper
+
+
Returns the MultiDenseVector from the VectorOutput.
+
+
getSparseVector(Points.VectorOutput) - Static method in class io.qdrant.client.VectorOutputHelper
+
+
Returns the SparseVector from the VectorOutput.
+
+
grpcClient() - Method in class io.qdrant.client.QdrantClient
+
+
Gets the low-level gRPC client.
+
+
+

H

+
+
hasId(Common.PointId) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match all records with the provided id
+
+
hasId(List<Common.PointId>) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match all records with the provided ids
+
+
hasVector(String) - Static method in class io.qdrant.client.ConditionFactory
+
+
Matches records where a value for the given vector is present.
+
+
healthCheckAsync() - Method in class io.qdrant.client.QdrantClient
+
+
Gets detailed information about the qdrant cluster.
+
+
healthCheckAsync(Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Gets detailed information about the qdrant cluster.
+
+
+

I

+
+
id(long) - Static method in class io.qdrant.client.PointIdFactory
+
+
Creates a point id from a long
+
+
id(UUID) - Static method in class io.qdrant.client.PointIdFactory
+
+
Creates a point id from a UUID
+
+
include(List<String>) - Static method in class io.qdrant.client.WithPayloadSelectorFactory
+
+
Which payload fields to include in response.
+
+
include(List<String>) - Static method in class io.qdrant.client.WithVectorsSelectorFactory
+
+
List of named vectors to include in response.
+
+
io.qdrant.client - package io.qdrant.client
+
+
package
+
+
isCompatible(String, String) - Static method in class io.qdrant.client.VersionsCompatibilityChecker
+
+
Compares server's and client's versions.
+
+
isEmpty(String) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match all records where the given field either does not exist, or has null or empty value.
+
+
isNull(String) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match all records where the given field is null.
+
+
+

L

+
+
linDecay(Points.DecayParamsExpression) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression representing linear decay.
+
+
list(List<JsonWithInt.Value>) - Static method in class io.qdrant.client.ValueFactory
+
+
Creates a value from a list of values
+
+
listAliasesAsync() - Method in class io.qdrant.client.QdrantClient
+
+
Gets a list of all aliases for all existing collections.
+
+
listAliasesAsync(Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Gets a list of all aliases for all existing collections.
+
+
listCollectionAliasesAsync(String) - Method in class io.qdrant.client.QdrantClient
+
+
Gets a list of all aliases for a collection.
+
+
listCollectionAliasesAsync(String, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Gets a list of all aliases for a collection.
+
+
listCollectionsAsync() - Method in class io.qdrant.client.QdrantClient
+
+
Gets the names of all existing collections
+
+
listCollectionsAsync(Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Gets the names of all existing collections
+
+
listFullSnapshotAsync() - Method in class io.qdrant.client.QdrantClient
+
+
Get list of snapshots for a whole storage.
+
+
listFullSnapshotAsync(Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Get list of snapshots for a whole storage.
+
+
listShardKeysAsync(String) - Method in class io.qdrant.client.QdrantClient
+
+
List the shard keys of a collection.
+
+
listShardKeysAsync(String, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
List the shard keys of a collection.
+
+
listSnapshotAsync(String) - Method in class io.qdrant.client.QdrantClient
+
+
Get list of snapshots for a collection.
+
+
listSnapshotAsync(String, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Get list of snapshots for a collection.
+
+
ln(Points.Expression) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression representing natural logarithm.
+
+
log10(Points.Expression) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression representing base-10 logarithm.
+
+
+

M

+
+
match(String, boolean) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given field matches the given boolean value.
+
+
match(String, long) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given field matches the given long value.
+
+
matchExceptKeywords(String, List<String>) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given field does not match any of the given keywords.
+
+
matchExceptValues(String, List<Long>) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given field does not match any of the given values.
+
+
matchKeyword(String, String) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given field matches the given keyword
+
+
matchKeywords(String, List<String>) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given field matches any of the given keywords.
+
+
matchPhrase(String, String) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given field matches the given phrase.
+
+
matchText(String, String) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given field matches the given text.
+
+
matchTextAny(String, String) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given field matches any word in the text.
+
+
matchValues(String, List<Long>) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given field matches any of the given values.
+
+
MetadataCredentials - Class in io.qdrant.client
+
+
Used internally by the client to send the API key and any headers as gRPC metadata.
+
+
MetadataCredentials(String, Map<String, String>) - Constructor for class io.qdrant.client.MetadataCredentials
+
+
Instantiates a new instance of MetadataCredentials
+
+
mult(Points.MultExpression) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression that multiplies values.
+
+
multiVector(float[][]) - Static method in class io.qdrant.client.VectorFactory
+
+
Creates a multi vector from a nested array of floats
+
+
multiVector(List<List<Float>>) - Static method in class io.qdrant.client.VectorFactory
+
+
Creates a multi vector from a nested list of floats
+
+
multiVectorInput(float[][]) - Static method in class io.qdrant.client.VectorInputFactory
+
+
Creates a Points.VectorInput from a nested array of floats representing a multi vector
+
+
multiVectorInput(List<List<Float>>) - Static method in class io.qdrant.client.VectorInputFactory
+
+
Creates a Points.VectorInput from a nested list of floats representing a multi vector
+
+
+

N

+
+
namedVectors(Map<String, Points.Vector>) - Static method in class io.qdrant.client.VectorsFactory
+
+
Creates named vectors
+
+
nearest(float...) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query from a list of floats
+
+
nearest(float[][]) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query from a nested array of floats representing a multi vector
+
+
nearest(long) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query from a long
+
+
nearest(Common.PointId) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query from a Common.PointId
+
+
nearest(Points.Document) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query from a Points.Document
+
+
nearest(Points.Image) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query from an image for cloud inference.
+
+
nearest(Points.InferenceObject) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query from an Points.InferenceObject
+
+
nearest(Points.VectorInput) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query for nearest search.
+
+
nearest(Points.VectorInput, Points.Mmr) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query for re-ranking points with MMR (Maximum Marginal Relevance).
+
+
nearest(List<Float>) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query from a list of floats
+
+
nearest(List<Float>, List<Integer>) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query from a list of floats and integers as indices
+
+
nearest(UUID) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query from a UUID
+
+
nearestMultiVector(List<List<Float>>) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query from a nested list of floats representing a multi vector
+
+
negate(Points.Expression) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates a negated Points.Expression.
+
+
nested(String, Common.Condition) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given nested field matches the given condition.
+
+
nested(String, Common.Filter) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given nested field matches the given filter.
+
+
newBuilder(ManagedChannel) - Static method in class io.qdrant.client.QdrantGrpcClient
+
+
Creates a new builder to build a client.
+
+
newBuilder(ManagedChannel, boolean) - Static method in class io.qdrant.client.QdrantGrpcClient
+
+
Creates a new builder to build a client.
+
+
newBuilder(ManagedChannel, boolean, boolean) - Static method in class io.qdrant.client.QdrantGrpcClient
+
+
Creates a new builder to build a client.
+
+
newBuilder(String) - Static method in class io.qdrant.client.QdrantGrpcClient
+
+
Creates a new builder to build a client.
+
+
newBuilder(String, int) - Static method in class io.qdrant.client.QdrantGrpcClient
+
+
Creates a new builder to build a client.
+
+
newBuilder(String, int, boolean) - Static method in class io.qdrant.client.QdrantGrpcClient
+
+
Creates a new builder to build a client.
+
+
newBuilder(String, int, boolean, boolean) - Static method in class io.qdrant.client.QdrantGrpcClient
+
+
Creates a new builder to build a client.
+
+
nullValue() - Static method in class io.qdrant.client.ValueFactory
+
+
Creates a null value
+
+
+

O

+
+
orderBy(Points.OrderBy) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query to order points by a payload field.
+
+
orderBy(String) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query to order points by a payload field.
+
+
overwritePayloadAsync(Points.SetPayloadPoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Overwrites the payload for the points.
+
+
overwritePayloadAsync(String, Map<String, JsonWithInt.Value>, Common.Filter, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Overwrites the payload for the filtered points.
+
+
overwritePayloadAsync(String, Map<String, JsonWithInt.Value>, Common.PointId, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Overwrites the payload for the given id.
+
+
overwritePayloadAsync(String, Map<String, JsonWithInt.Value>, Points.PointsSelector, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Overwrites the payload for the points.
+
+
overwritePayloadAsync(String, Map<String, JsonWithInt.Value>, Points.PointsSelector, Boolean, String, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Overwrites the payload for the points.
+
+
overwritePayloadAsync(String, Map<String, JsonWithInt.Value>, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Overwrites the payload for all points in the collection.
+
+
overwritePayloadAsync(String, Map<String, JsonWithInt.Value>, List<Common.PointId>, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Overwrites the payload for the given ids.
+
+
+

P

+
+
PointIdFactory - Class in io.qdrant.client
+
+
Convenience methods for constructing Common.PointId
+
+
points() - Method in class io.qdrant.client.QdrantGrpcClient
+
+
Gets the client for points
+
+
pow(Points.PowExpression) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression from a Points.PowExpression.
+
+
+

Q

+
+
qdrant() - Method in class io.qdrant.client.QdrantGrpcClient
+
+
Gets the client for qdrant services
+
+
QdrantClient - Class in io.qdrant.client
+
+
Client for the Qdrant vector database.
+
+
QdrantClient(QdrantGrpcClient) - Constructor for class io.qdrant.client.QdrantClient
+
+
Creates a new instance of QdrantClient
+
+
QdrantException - Exception in io.qdrant.client
+
+
An exception when interacting with qdrant
+
+
QdrantException(String) - Constructor for exception io.qdrant.client.QdrantException
+
+
Instantiates a new instance of QdrantException
+
+
QdrantGrpcClient - Class in io.qdrant.client
+
+
Low-level gRPC client for qdrant vector database.
+
+
QdrantGrpcClient.Builder - Class in io.qdrant.client
+
+
builder for QdrantGrpcClient
+
+
queryAsync(Points.QueryPoints) - Method in class io.qdrant.client.QdrantClient
+
+
Universally query points.
+
+
queryAsync(Points.QueryPoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Universally query points.
+
+
queryBatchAsync(String, List<Points.QueryPoints>) - Method in class io.qdrant.client.QdrantClient
+
+
Universally query points in batch.
+
+
queryBatchAsync(String, List<Points.QueryPoints>, Points.ReadConsistency) - Method in class io.qdrant.client.QdrantClient
+
+
Universally query points in batch.
+
+
queryBatchAsync(String, List<Points.QueryPoints>, Points.ReadConsistency, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Universally query points in batch.
+
+
QueryFactory - Class in io.qdrant.client
+
+
Convenience methods for constructing Points.Query
+
+
queryGroupsAsync(Points.QueryPointGroups) - Method in class io.qdrant.client.QdrantClient
+
+
Universally query points.
+
+
queryGroupsAsync(Points.QueryPointGroups, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Universally query points.
+
+
+

R

+
+
range(String, Common.Range) - Static method in class io.qdrant.client.ConditionFactory
+
+
Match records where the given field matches the given range.
+
+
recommend(Points.RecommendInput) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query for recommendation.
+
+
recommendAsync(Points.RecommendPoints) - Method in class io.qdrant.client.QdrantClient
+
+
Look for the points which are closer to stored positive examples and at the same time further + to negative examples.
+
+
recommendAsync(Points.RecommendPoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Look for the points which are closer to stored positive examples and at the same time further + to negative examples.
+
+
recommendBatchAsync(String, List<Points.RecommendPoints>, Points.ReadConsistency) - Method in class io.qdrant.client.QdrantClient
+
+
Look for the points which are closer to stored positive examples and at the same time further + to negative examples.
+
+
recommendBatchAsync(String, List<Points.RecommendPoints>, Points.ReadConsistency, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Look for the points which are closer to stored positive examples and at the same time further + to negative examples.
+
+
recommendGroupsAsync(Points.RecommendPointGroups) - Method in class io.qdrant.client.QdrantClient
+
+
Look for the points which are closer to stored positive examples and at the same time further + to negative examples, grouped by a given field
+
+
recommendGroupsAsync(Points.RecommendPointGroups, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Look for the points which are closer to stored positive examples and at the same time further + to negative examples, grouped by a given field
+
+
recreateCollectionAsync(Collections.CreateCollection) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes a collection if one exists, and creates a new collection with the given parameters.
+
+
recreateCollectionAsync(Collections.CreateCollection, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes a collection if one exists, and creates a new collection with the given parameters.
+
+
recreateCollectionAsync(String, Collections.VectorParams) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes a collection if one exists, and creates a new collection with the given parameters.
+
+
recreateCollectionAsync(String, Collections.VectorParams, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes a collection if one exists, and creates a new collection with the given parameters.
+
+
recreateCollectionAsync(String, Map<String, Collections.VectorParams>) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes a collection if one exists, and creates a new collection with the given parameters.
+
+
recreateCollectionAsync(String, Map<String, Collections.VectorParams>, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Deletes a collection if one exists, and creates a new collection with the given parameters.
+
+
relevanceFeedback(Points.RelevanceFeedbackInput) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query for search with feedback from some oracle.
+
+
renameAliasAsync(String, String) - Method in class io.qdrant.client.QdrantClient
+
+
Renames an existing alias.
+
+
renameAliasAsync(String, String, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Renames an existing alias.
+
+
RequestHeaders - Class in io.qdrant.client
+
+
Utilities for attaching per-request headers to gRPC calls.
+
+
retrieveAsync(Points.GetPoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Retrieves points.
+
+
retrieveAsync(String, Common.PointId, boolean, boolean, Points.ReadConsistency) - Method in class io.qdrant.client.QdrantClient
+
+
Retrieves points.
+
+
retrieveAsync(String, Common.PointId, Points.ReadConsistency) - Method in class io.qdrant.client.QdrantClient
+
+
Retrieves points.
+
+
retrieveAsync(String, List<Common.PointId>, boolean, boolean, Points.ReadConsistency) - Method in class io.qdrant.client.QdrantClient
+
+
Retrieves points.
+
+
retrieveAsync(String, List<Common.PointId>, Points.ReadConsistency) - Method in class io.qdrant.client.QdrantClient
+
+
Retrieves points.
+
+
retrieveAsync(String, List<Common.PointId>, Points.WithPayloadSelector, Points.WithVectorsSelector, Points.ReadConsistency) - Method in class io.qdrant.client.QdrantClient
+
+
Retrieves points.
+
+
retrieveAsync(String, List<Common.PointId>, Points.WithPayloadSelector, Points.WithVectorsSelector, Points.ReadConsistency, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Retrieves points.
+
+
rrf(Points.Rrf) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query for reciprocal rank fusion (RRF).
+
+
+

S

+
+
sample(Points.Sample) - Static method in class io.qdrant.client.QueryFactory
+
+
Creates a Points.Query for sampling.
+
+
scrollAsync(Points.ScrollPoints) - Method in class io.qdrant.client.QdrantClient
+
+
Iterates over all or filtered points.
+
+
scrollAsync(Points.ScrollPoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Iterates over all or filtered points.
+
+
searchAsync(Points.SearchPoints) - Method in class io.qdrant.client.QdrantClient
+
+
Retrieves closest points based on vector similarity and the given filtering conditions.
+
+
searchAsync(Points.SearchPoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Retrieves closest points based on vector similarity and the given filtering conditions.
+
+
searchBatchAsync(String, List<Points.SearchPoints>, Points.ReadConsistency) - Method in class io.qdrant.client.QdrantClient
+
+
Retrieves closest points based on vector similarity and the given filtering conditions.
+
+
searchBatchAsync(String, List<Points.SearchPoints>, Points.ReadConsistency, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Retrieves closest points based on vector similarity and the given filtering conditions.
+
+
searchGroupsAsync(Points.SearchPointGroups) - Method in class io.qdrant.client.QdrantClient
+
+
Retrieves closest points based on vector similarity and the given filtering conditions, grouped + by a given field.
+
+
searchGroupsAsync(Points.SearchPointGroups, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Retrieves closest points based on vector similarity and the given filtering conditions, grouped + by a given field.
+
+
searchMatrixOffsetsAsync(Points.SearchMatrixPoints) - Method in class io.qdrant.client.QdrantClient
+
+
Compute distance matrix for sampled points with an offset based output format
+
+
searchMatrixOffsetsAsync(Points.SearchMatrixPoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Compute distance matrix for sampled points with an offset based output format
+
+
searchMatrixPairsAsync(Points.SearchMatrixPoints) - Method in class io.qdrant.client.QdrantClient
+
+
Compute distance matrix for sampled points with a pair based output format.
+
+
searchMatrixPairsAsync(Points.SearchMatrixPoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Compute distance matrix for sampled points with a pair based output format.
+
+
setPayloadAsync(Points.SetPayloadPoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Sets the payload for the points.
+
+
setPayloadAsync(String, Map<String, JsonWithInt.Value>, Common.Filter, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Sets the payload for the given ids.
+
+
setPayloadAsync(String, Map<String, JsonWithInt.Value>, Common.PointId, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Sets the payload for the given id.
+
+
setPayloadAsync(String, Map<String, JsonWithInt.Value>, Points.PointsSelector, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Sets the payload for the points.
+
+
setPayloadAsync(String, Map<String, JsonWithInt.Value>, Points.PointsSelector, Boolean, String, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Sets the payload for the points.
+
+
setPayloadAsync(String, Map<String, JsonWithInt.Value>, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Sets the payload for all points in the collection.
+
+
setPayloadAsync(String, Map<String, JsonWithInt.Value>, List<Common.PointId>, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Sets the payload for the given ids.
+
+
shardKey(long) - Static method in class io.qdrant.client.ShardKeyFactory
+
+
Creates a Collections.ShardKey based on a number.
+
+
shardKey(String) - Static method in class io.qdrant.client.ShardKeyFactory
+
+
Creates a Collections.ShardKey based on a keyword.
+
+
ShardKeyFactory - Class in io.qdrant.client
+
+
Convenience methods for constructing Collections.ShardKey
+
+
shardKeySelector(long...) - Static method in class io.qdrant.client.ShardKeySelectorFactory
+
+
Creates a Points.ShardKeySelector with the given shard key numbers.
+
+
shardKeySelector(Collections.ShardKey...) - Static method in class io.qdrant.client.ShardKeySelectorFactory
+
+
Creates a Points.ShardKeySelector with the given shard keys.
+
+
shardKeySelector(String...) - Static method in class io.qdrant.client.ShardKeySelectorFactory
+
+
Creates a Points.ShardKeySelector with the given shard key keywords.
+
+
ShardKeySelectorFactory - Class in io.qdrant.client
+
+
Convenience methods for constructing Points.ShardKeySelector
+
+
snapshots() - Method in class io.qdrant.client.QdrantGrpcClient
+
+
Gets the client for snapshots
+
+
sqrt(Points.Expression) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression representing square root.
+
+
startFrom(float) - Static method in class io.qdrant.client.StartFromFactory
+
+
Creates a Points.StartFrom value from a float
+
+
startFrom(int) - Static method in class io.qdrant.client.StartFromFactory
+
+
Creates a Points.StartFrom value from a int
+
+
startFrom(Timestamp) - Static method in class io.qdrant.client.StartFromFactory
+
+
Creates a Points.StartFrom value from a Timestamp
+
+
startFrom(String) - Static method in class io.qdrant.client.StartFromFactory
+
+
Creates a Points.StartFrom value from a String timestamp
+
+
startFrom(Instant) - Static method in class io.qdrant.client.StartFromFactory
+
+
Creates a Points.StartFrom value from a Timestamp
+
+
StartFromFactory - Class in io.qdrant.client
+
+
Convenience methods for constructing Points.StartFrom
+
+
sum(Points.SumExpression) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression that sums values.
+
+
+

T

+
+
targetVector(Common.PointId) - Static method in class io.qdrant.client.TargetVectorFactory
+
+
Creates a TargetVector from a point ID
+
+
targetVector(Points.Vector) - Static method in class io.qdrant.client.TargetVectorFactory
+
+
Creates a TargetVector from a Vector
+
+
TargetVectorFactory - Class in io.qdrant.client
+
+
Convenience methods for constructing Points.TargetVector
+
+
+

U

+
+
updateAliasesAsync(List<Collections.AliasOperations>) - Method in class io.qdrant.client.QdrantClient
+
+
Update the aliases of existing collections.
+
+
updateAliasesAsync(List<Collections.AliasOperations>, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Update the aliases of existing collections.
+
+
updateCollectionAsync(Collections.UpdateCollection) - Method in class io.qdrant.client.QdrantClient
+
+
Update parameters of the collection
+
+
updateCollectionAsync(Collections.UpdateCollection, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Update parameters of the collection
+
+
updateCollectionClusterSetupAsync(Collections.UpdateCollectionClusterSetupRequest) - Method in class io.qdrant.client.QdrantClient
+
+
Update cluster setup for a collection
+
+
updateCollectionClusterSetupAsync(Collections.UpdateCollectionClusterSetupRequest, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Update cluster setup for a collection
+
+
updateVectorsAsync(Points.UpdatePointVectors) - Method in class io.qdrant.client.QdrantClient
+
+
Update named vectors for point.
+
+
updateVectorsAsync(Points.UpdatePointVectors, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Update named vectors for point.
+
+
updateVectorsAsync(String, List<Points.PointVectors>) - Method in class io.qdrant.client.QdrantClient
+
+
Update named vectors for point.
+
+
updateVectorsAsync(String, List<Points.PointVectors>, Boolean, Points.WriteOrderingType, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Update named vectors for point.
+
+
updateVectorsAsync(String, List<Points.PointVectors>, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Update named vectors for point.
+
+
upsertAsync(Points.UpsertPoints) - Method in class io.qdrant.client.QdrantClient
+
+
Perform insert and updates on points.
+
+
upsertAsync(Points.UpsertPoints, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Perform insert and updates on points.
+
+
upsertAsync(String, List<Points.PointStruct>) - Method in class io.qdrant.client.QdrantClient
+
+
Perform insert and updates on points.
+
+
upsertAsync(String, List<Points.PointStruct>, Duration) - Method in class io.qdrant.client.QdrantClient
+
+
Perform insert and updates on points.
+
+
+

V

+
+
value(boolean) - Static method in class io.qdrant.client.ValueFactory
+
+
Creates a value from a boolean
+
+
value(double) - Static method in class io.qdrant.client.ValueFactory
+
+
Creates a value from a double
+
+
value(long) - Static method in class io.qdrant.client.ValueFactory
+
+
Creates a value from a long
+
+
value(String) - Static method in class io.qdrant.client.ValueFactory
+
+
Creates a value from a String
+
+
value(List<JsonWithInt.Value>) - Static method in class io.qdrant.client.ValueFactory
+
+
Creates a value from a list of values.
+
+
value(Map<String, JsonWithInt.Value>) - Static method in class io.qdrant.client.ValueFactory
+
+
Creates a value from a map of nested values
+
+
ValueFactory - Class in io.qdrant.client
+
+
Convenience methods for constructing JsonWithInt.Value
+
+
valuesCount(String, Common.ValuesCount) - Static method in class io.qdrant.client.ConditionFactory
+
+
Matches records where the given field has a count of values within the specified count range
+
+
variable(String) - Static method in class io.qdrant.client.ExpressionFactory
+
+
Creates an Points.Expression from a variable name.
+
+
vector(float...) - Static method in class io.qdrant.client.VectorFactory
+
+
Creates a vector from a list of floats
+
+
vector(Points.Document) - Static method in class io.qdrant.client.VectorFactory
+
+
Creates a vector from a document for cloud inference.
+
+
vector(Points.Image) - Static method in class io.qdrant.client.VectorFactory
+
+
Creates a vector from an image for cloud inference.
+
+
vector(Points.InferenceObject) - Static method in class io.qdrant.client.VectorFactory
+
+
Creates a vector from an inference object.
+
+
vector(List<Float>) - Static method in class io.qdrant.client.VectorFactory
+
+
Creates a vector from a list of floats
+
+
vector(List<Float>, List<Integer>) - Static method in class io.qdrant.client.VectorFactory
+
+
Creates a sparse vector from a list of floats and integers as indices
+
+
VectorFactory - Class in io.qdrant.client
+
+
Convenience methods for constructing Points.Vector
+
+
vectorInput(float...) - Static method in class io.qdrant.client.VectorInputFactory
+
+
Creates a Points.VectorInput from a list of floats
+
+
vectorInput(long) - Static method in class io.qdrant.client.VectorInputFactory
+
+
Creates a Points.VectorInput from a long
+
+
vectorInput(Common.PointId) - Static method in class io.qdrant.client.VectorInputFactory
+
+
Creates a Points.VectorInput from a Common.PointId
+
+
vectorInput(Points.Document) - Static method in class io.qdrant.client.VectorInputFactory
+
+
Creates a Points.VectorInput from a Points.Document
+
+
vectorInput(Points.Image) - Static method in class io.qdrant.client.VectorInputFactory
+
+
Creates a Points.VectorInput from a an Points.Image
+
+
vectorInput(Points.InferenceObject) - Static method in class io.qdrant.client.VectorInputFactory
+
+
Creates a Points.VectorInput from a Points.InferenceObject
+
+
vectorInput(List<Float>) - Static method in class io.qdrant.client.VectorInputFactory
+
+
Creates a Points.VectorInput from a list of floats
+
+
vectorInput(List<Float>, List<Integer>) - Static method in class io.qdrant.client.VectorInputFactory
+
+
Creates a Points.VectorInput from a list of floats and integers as indices
+
+
vectorInput(UUID) - Static method in class io.qdrant.client.VectorInputFactory
+
+
Creates a Points.VectorInput from a UUID
+
+
VectorInputFactory - Class in io.qdrant.client
+
+
Convenience methods for constructing Points.VectorInput
+
+
VectorOutputHelper - Class in io.qdrant.client
+
+
Helper methods for extracting vector data from Points.VectorOutput.
+
+
vectors(float...) - Static method in class io.qdrant.client.VectorsFactory
+
+
Creates a vector
+
+
vectors(Points.Document) - Static method in class io.qdrant.client.VectorsFactory
+
+
Creates an instance of Points.Vectors from a document for cloud inference.
+
+
vectors(Points.Image) - Static method in class io.qdrant.client.VectorsFactory
+
+
Creates an instance of Points.Vectors from an image for cloud inference.
+
+
vectors(Points.InferenceObject) - Static method in class io.qdrant.client.VectorsFactory
+
+
Creates an instance of Points.Vectors from an inference object.
+
+
vectors(Points.Vector) - Static method in class io.qdrant.client.VectorsFactory
+
+
Creates a vector
+
+
vectors(List<Float>) - Static method in class io.qdrant.client.VectorsFactory
+
+
Creates a vector
+
+
VectorsFactory - Class in io.qdrant.client
+
+
Convenience methods for constructing Points.Vectors
+
+
VersionsCompatibilityChecker - Class in io.qdrant.client
+
+
Utility class to check compatibility between server's and client's versions.
+
+
VersionsCompatibilityChecker() - Constructor for class io.qdrant.client.VersionsCompatibilityChecker
+
+
Default constructor.
+
+
+

W

+
+
withApiKey(String) - Method in class io.qdrant.client.QdrantGrpcClient.Builder
+
+
Sets the API key to use for authentication
+
+
withCallCredentials(CallCredentials) - Method in class io.qdrant.client.QdrantGrpcClient.Builder
+
+
Sets the credential data that will be propagated to the server via request metadata for each + RPC.
+
+
withHeader(Context, String, String) - Static method in class io.qdrant.client.RequestHeaders
+
+
Returns a new Context that carries key/value as a gRPC metadata header on every request + started within that context.
+
+
withHeaders(Context, Map<String, String>) - Static method in class io.qdrant.client.RequestHeaders
+
+
Returns a new Context that carries all entries of headers as gRPC metadata on every + request started within that context.
+
+
withHeaders(Map<String, String>) - Method in class io.qdrant.client.QdrantGrpcClient.Builder
+
+
Sets custom headers to send with every gRPC request.
+
+
WithPayloadSelectorFactory - Class in io.qdrant.client
+
+
Convenience methods for constructing Points.WithPayloadSelector
+
+
withTimeout(Duration) - Method in class io.qdrant.client.QdrantGrpcClient.Builder
+
+
Sets a default timeout for all requests.
+
+
WithVectorsSelectorFactory - Class in io.qdrant.client
+
+
Convenience methods for constructing Points.WithVectorsSelector
+
+
+A B C D E F G H I L M N O P Q R S T U V W 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/index.html b/index.html new file mode 100644 index 00000000..ad77c470 --- /dev/null +++ b/index.html @@ -0,0 +1,25 @@ + + + + +client 1.18.1 API + + + + + + + + + + +
+ +

io/qdrant/client/package-summary.html

+
+ + diff --git a/io/qdrant/client/ConditionFactory.html b/io/qdrant/client/ConditionFactory.html new file mode 100644 index 00000000..f82a71b0 --- /dev/null +++ b/io/qdrant/client/ConditionFactory.html @@ -0,0 +1,632 @@ + + + + +ConditionFactory (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ConditionFactory

+
+
java.lang.Object +
io.qdrant.client.ConditionFactory
+
+
+
+
public final class ConditionFactory +extends Object
+
Convenience methods for constructing Common.Condition
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    datetimeRange(String field, + io.qdrant.client.grpc.Common.DatetimeRange datetimeRange)
    +
    +
    Matches records where the given field has a datetime value within the specified range
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    filter(io.qdrant.client.grpc.Common.Filter filter)
    +
    +
    Nests a filter
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    geoBoundingBox(String field, + double topLeftLatitude, + double topLeftLongitude, + double bottomRightLatitude, + double bottomRightLongitude)
    +
    +
    Match records where the given field has values inside a bounding box specified by the top left + and bottom right coordinates.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    geoPolygon(String field, + io.qdrant.client.grpc.Common.GeoLineString exterior, + List<io.qdrant.client.grpc.Common.GeoLineString> interiors)
    +
    +
    Matches records where the given field has values inside the provided polygon.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    geoRadius(String field, + double latitude, + double longitude, + float radius)
    +
    +
    Match records where the given field has values inside a circle centred at a given latitude and + longitude with a given radius.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    hasId(io.qdrant.client.grpc.Common.PointId id)
    +
    +
    Match all records with the provided id
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    hasId(List<io.qdrant.client.grpc.Common.PointId> ids)
    +
    +
    Match all records with the provided ids
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    hasVector(String vector)
    +
    +
    Matches records where a value for the given vector is present.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    isEmpty(String field)
    +
    +
    Match all records where the given field either does not exist, or has null or empty value.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    isNull(String field)
    +
    +
    Match all records where the given field is null.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    match(String field, + boolean value)
    +
    +
    Match records where the given field matches the given boolean value.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    match(String field, + long value)
    +
    +
    Match records where the given field matches the given long value.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    matchExceptKeywords(String field, + List<String> keywords)
    +
    +
    Match records where the given field does not match any of the given keywords.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    matchExceptValues(String field, + List<Long> values)
    +
    +
    Match records where the given field does not match any of the given values.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    matchKeyword(String field, + String keyword)
    +
    +
    Match records where the given field matches the given keyword
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    matchKeywords(String field, + List<String> keywords)
    +
    +
    Match records where the given field matches any of the given keywords.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    matchPhrase(String field, + String phrase)
    +
    +
    Match records where the given field matches the given phrase.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    matchText(String field, + String text)
    +
    +
    Match records where the given field matches the given text.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    matchTextAny(String field, + String textAny)
    +
    +
    Match records where the given field matches any word in the text.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    matchValues(String field, + List<Long> values)
    +
    +
    Match records where the given field matches any of the given values.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    nested(String field, + io.qdrant.client.grpc.Common.Condition condition)
    +
    +
    Match records where the given nested field matches the given condition.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    nested(String field, + io.qdrant.client.grpc.Common.Filter filter)
    +
    +
    Match records where the given nested field matches the given filter.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    range(String field, + io.qdrant.client.grpc.Common.Range range)
    +
    +
    Match records where the given field matches the given range.
    +
    +
    static io.qdrant.client.grpc.Common.Condition
    +
    valuesCount(String field, + io.qdrant.client.grpc.Common.ValuesCount valuesCount)
    +
    +
    Matches records where the given field has a count of values within the specified count range
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      hasId

      +
      public static io.qdrant.client.grpc.Common.Condition hasId(io.qdrant.client.grpc.Common.PointId id)
      +
      Match all records with the provided id
      +
      +
      Parameters:
      +
      id - The id to match
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      hasId

      +
      public static io.qdrant.client.grpc.Common.Condition hasId(List<io.qdrant.client.grpc.Common.PointId> ids)
      +
      Match all records with the provided ids
      +
      +
      Parameters:
      +
      ids - The ids to match
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      isEmpty

      +
      public static io.qdrant.client.grpc.Common.Condition isEmpty(String field)
      +
      Match all records where the given field either does not exist, or has null or empty value.
      +
      +
      Parameters:
      +
      field - The name of the field
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      isNull

      +
      public static io.qdrant.client.grpc.Common.Condition isNull(String field)
      +
      Match all records where the given field is null.
      +
      +
      Parameters:
      +
      field - The name of the field
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      matchKeyword

      +
      public static io.qdrant.client.grpc.Common.Condition matchKeyword(String field, + String keyword)
      +
      Match records where the given field matches the given keyword
      +
      +
      Parameters:
      +
      field - The name of the field
      +
      keyword - The keyword to match
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      matchText

      +
      public static io.qdrant.client.grpc.Common.Condition matchText(String field, + String text)
      +
      Match records where the given field matches the given text.
      +
      +
      Parameters:
      +
      field - The name of the field
      +
      text - The text to match
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      matchPhrase

      +
      public static io.qdrant.client.grpc.Common.Condition matchPhrase(String field, + String phrase)
      +
      Match records where the given field matches the given phrase.
      +
      +
      Parameters:
      +
      field - The name of the field
      +
      phrase - The phrase to match
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      matchTextAny

      +
      public static io.qdrant.client.grpc.Common.Condition matchTextAny(String field, + String textAny)
      +
      Match records where the given field matches any word in the text.
      +
      +
      Parameters:
      +
      field - The name of the field
      +
      textAny - The text to match
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      match

      +
      public static io.qdrant.client.grpc.Common.Condition match(String field, + boolean value)
      +
      Match records where the given field matches the given boolean value.
      +
      +
      Parameters:
      +
      field - The name of the field
      +
      value - The value to match
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      match

      +
      public static io.qdrant.client.grpc.Common.Condition match(String field, + long value)
      +
      Match records where the given field matches the given long value.
      +
      +
      Parameters:
      +
      field - The name of the field
      +
      value - The value to match
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      matchKeywords

      +
      public static io.qdrant.client.grpc.Common.Condition matchKeywords(String field, + List<String> keywords)
      +
      Match records where the given field matches any of the given keywords.
      +
      +
      Parameters:
      +
      field - The name of the field
      +
      keywords - The keywords to match
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      matchValues

      +
      public static io.qdrant.client.grpc.Common.Condition matchValues(String field, + List<Long> values)
      +
      Match records where the given field matches any of the given values.
      +
      +
      Parameters:
      +
      field - The name of the field
      +
      values - The values to match
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      matchExceptKeywords

      +
      public static io.qdrant.client.grpc.Common.Condition matchExceptKeywords(String field, + List<String> keywords)
      +
      Match records where the given field does not match any of the given keywords.
      +
      +
      Parameters:
      +
      field - The name of the field
      +
      keywords - The keywords not to match
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      matchExceptValues

      +
      public static io.qdrant.client.grpc.Common.Condition matchExceptValues(String field, + List<Long> values)
      +
      Match records where the given field does not match any of the given values.
      +
      +
      Parameters:
      +
      field - The name of the field
      +
      values - The values not to match
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      nested

      +
      public static io.qdrant.client.grpc.Common.Condition nested(String field, + io.qdrant.client.grpc.Common.Condition condition)
      +
      Match records where the given nested field matches the given condition.
      +
      +
      Parameters:
      +
      field - The name of the nested field.
      +
      condition - The condition to match.
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      nested

      +
      public static io.qdrant.client.grpc.Common.Condition nested(String field, + io.qdrant.client.grpc.Common.Filter filter)
      +
      Match records where the given nested field matches the given filter.
      +
      +
      Parameters:
      +
      field - The name of the nested field.
      +
      filter - The filter to match.
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      range

      +
      public static io.qdrant.client.grpc.Common.Condition range(String field, + io.qdrant.client.grpc.Common.Range range)
      +
      Match records where the given field matches the given range.
      +
      +
      Parameters:
      +
      field - The name of the nested field.
      +
      range - The range to match.
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      geoRadius

      +
      public static io.qdrant.client.grpc.Common.Condition geoRadius(String field, + double latitude, + double longitude, + float radius)
      +
      Match records where the given field has values inside a circle centred at a given latitude and + longitude with a given radius.
      +
      +
      Parameters:
      +
      field - The name of the field.
      +
      latitude - The latitude of the center.
      +
      longitude - The longitude of the center.
      +
      radius - The radius in meters.
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      geoBoundingBox

      +
      public static io.qdrant.client.grpc.Common.Condition geoBoundingBox(String field, + double topLeftLatitude, + double topLeftLongitude, + double bottomRightLatitude, + double bottomRightLongitude)
      +
      Match records where the given field has values inside a bounding box specified by the top left + and bottom right coordinates.
      +
      +
      Parameters:
      +
      field - The name of the field.
      +
      topLeftLatitude - The latitude of the top left point.
      +
      topLeftLongitude - The longitude of the top left point.
      +
      bottomRightLatitude - The latitude of the bottom right point.
      +
      bottomRightLongitude - The longitude of the bottom right point.
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      geoPolygon

      +
      public static io.qdrant.client.grpc.Common.Condition geoPolygon(String field, + io.qdrant.client.grpc.Common.GeoLineString exterior, + List<io.qdrant.client.grpc.Common.GeoLineString> interiors)
      +
      Matches records where the given field has values inside the provided polygon. A polygon always + has an exterior ring and may optionally have interior rings, which represent independent areas + or holes. When defining a ring, you must pick either a clockwise or counterclockwise ordering + for your points. The first and last point of the polygon must be the same.
      +
      +
      Parameters:
      +
      field - The name of the field.
      +
      exterior - The exterior ring of the polygon.
      +
      interiors - The interior rings of the polygon.
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      valuesCount

      +
      public static io.qdrant.client.grpc.Common.Condition valuesCount(String field, + io.qdrant.client.grpc.Common.ValuesCount valuesCount)
      +
      Matches records where the given field has a count of values within the specified count range
      +
      +
      Parameters:
      +
      field - The name of the field.
      +
      valuesCount - The count range to match.
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      filter

      +
      public static io.qdrant.client.grpc.Common.Condition filter(io.qdrant.client.grpc.Common.Filter filter)
      +
      Nests a filter
      +
      +
      Parameters:
      +
      filter - The filter to nest.
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      datetimeRange

      +
      public static io.qdrant.client.grpc.Common.Condition datetimeRange(String field, + io.qdrant.client.grpc.Common.DatetimeRange datetimeRange)
      +
      Matches records where the given field has a datetime value within the specified range
      +
      +
      Parameters:
      +
      field - The name of the field.
      +
      datetimeRange - The datetime range to match.
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    • +
      +

      hasVector

      +
      public static io.qdrant.client.grpc.Common.Condition hasVector(String vector)
      +
      Matches records where a value for the given vector is present.
      +
      +
      Parameters:
      +
      vector - The name of the vector.
      +
      Returns:
      +
      a new instance of Common.Condition
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/ExpressionFactory.html b/io/qdrant/client/ExpressionFactory.html new file mode 100644 index 00000000..20d3c908 --- /dev/null +++ b/io/qdrant/client/ExpressionFactory.html @@ -0,0 +1,463 @@ + + + + +ExpressionFactory (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ExpressionFactory

+
+
java.lang.Object +
io.qdrant.client.ExpressionFactory
+
+
+
+
public final class ExpressionFactory +extends Object
+
Convenience methods for constructing Points.Expression
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    abs(io.qdrant.client.grpc.Points.Expression expr)
    +
    +
    Creates an Points.Expression representing absolute value.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    condition(io.qdrant.client.grpc.Common.Condition condition)
    +
    +
    Creates an Points.Expression from a Common.Condition.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    constant(float constant)
    +
    +
    Creates an Points.Expression from a constant.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    datetime(String datetime)
    +
    +
    Creates an Points.Expression from a date-time constant string.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    datetimeKey(String datetimeKey)
    +
    +
    Creates an Points.Expression from a payload key referencing date-time values.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    div(io.qdrant.client.grpc.Points.DivExpression div)
    +
    +
    Creates an Points.Expression that divides values.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    exp(io.qdrant.client.grpc.Points.Expression expr)
    +
    +
    Creates an Points.Expression representing exponential.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    expDecay(io.qdrant.client.grpc.Points.DecayParamsExpression decay)
    +
    +
    Creates an Points.Expression representing exponential decay.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    gaussDecay(io.qdrant.client.grpc.Points.DecayParamsExpression decay)
    +
    +
    Creates an Points.Expression representing Gaussian decay.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    geoDistance(io.qdrant.client.grpc.Points.GeoDistance geoDistance)
    +
    +
    Creates an Points.Expression from a Points.GeoDistance.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    linDecay(io.qdrant.client.grpc.Points.DecayParamsExpression decay)
    +
    +
    Creates an Points.Expression representing linear decay.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    ln(io.qdrant.client.grpc.Points.Expression expr)
    +
    +
    Creates an Points.Expression representing natural logarithm.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    log10(io.qdrant.client.grpc.Points.Expression expr)
    +
    +
    Creates an Points.Expression representing base-10 logarithm.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    mult(io.qdrant.client.grpc.Points.MultExpression mult)
    +
    +
    Creates an Points.Expression that multiplies values.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    negate(io.qdrant.client.grpc.Points.Expression expr)
    +
    +
    Creates a negated Points.Expression.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    pow(io.qdrant.client.grpc.Points.PowExpression pow)
    +
    +
    Creates an Points.Expression from a Points.PowExpression.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    sqrt(io.qdrant.client.grpc.Points.Expression expr)
    +
    +
    Creates an Points.Expression representing square root.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    sum(io.qdrant.client.grpc.Points.SumExpression sum)
    +
    +
    Creates an Points.Expression that sums values.
    +
    +
    static io.qdrant.client.grpc.Points.Expression
    +
    variable(String variable)
    +
    +
    Creates an Points.Expression from a variable name.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      constant

      +
      public static io.qdrant.client.grpc.Points.Expression constant(float constant)
      +
      Creates an Points.Expression from a constant.
      +
      +
      Parameters:
      +
      constant - The constant float value
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      variable

      +
      public static io.qdrant.client.grpc.Points.Expression variable(String variable)
      +
      Creates an Points.Expression from a variable name.
      +
      +
      Parameters:
      +
      variable - The variable name (e.g., payload key or score reference)
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      condition

      +
      public static io.qdrant.client.grpc.Points.Expression condition(io.qdrant.client.grpc.Common.Condition condition)
      +
      Creates an Points.Expression from a Common.Condition.
      +
      +
      Parameters:
      +
      condition - The condition to evaluate
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      geoDistance

      +
      public static io.qdrant.client.grpc.Points.Expression geoDistance(io.qdrant.client.grpc.Points.GeoDistance geoDistance)
      +
      Creates an Points.Expression from a Points.GeoDistance.
      +
      +
      Parameters:
      +
      geoDistance - The geo distance object
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      datetime

      +
      public static io.qdrant.client.grpc.Points.Expression datetime(String datetime)
      +
      Creates an Points.Expression from a date-time constant string.
      +
      +
      Parameters:
      +
      datetime - The date-time string
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      datetimeKey

      +
      public static io.qdrant.client.grpc.Points.Expression datetimeKey(String datetimeKey)
      +
      Creates an Points.Expression from a payload key referencing date-time values.
      +
      +
      Parameters:
      +
      datetimeKey - The payload key containing date-time values
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      mult

      +
      public static io.qdrant.client.grpc.Points.Expression mult(io.qdrant.client.grpc.Points.MultExpression mult)
      +
      Creates an Points.Expression that multiplies values.
      +
      +
      Parameters:
      +
      mult - The multiplication expression
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      sum

      +
      public static io.qdrant.client.grpc.Points.Expression sum(io.qdrant.client.grpc.Points.SumExpression sum)
      +
      Creates an Points.Expression that sums values.
      +
      +
      Parameters:
      +
      sum - The summation expression
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      div

      +
      public static io.qdrant.client.grpc.Points.Expression div(io.qdrant.client.grpc.Points.DivExpression div)
      +
      Creates an Points.Expression that divides values.
      +
      +
      Parameters:
      +
      div - The division expression
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      negate

      +
      public static io.qdrant.client.grpc.Points.Expression negate(io.qdrant.client.grpc.Points.Expression expr)
      +
      Creates a negated Points.Expression.
      +
      +
      Parameters:
      +
      expr - The expression to negate
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      abs

      +
      public static io.qdrant.client.grpc.Points.Expression abs(io.qdrant.client.grpc.Points.Expression expr)
      +
      Creates an Points.Expression representing absolute value.
      +
      +
      Parameters:
      +
      expr - The expression to wrap with abs()
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      sqrt

      +
      public static io.qdrant.client.grpc.Points.Expression sqrt(io.qdrant.client.grpc.Points.Expression expr)
      +
      Creates an Points.Expression representing square root.
      +
      +
      Parameters:
      +
      expr - The expression to apply sqrt() to
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      pow

      +
      public static io.qdrant.client.grpc.Points.Expression pow(io.qdrant.client.grpc.Points.PowExpression pow)
      +
      Creates an Points.Expression from a Points.PowExpression.
      +
      +
      Parameters:
      +
      pow - The power expression (base and exponent)
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      exp

      +
      public static io.qdrant.client.grpc.Points.Expression exp(io.qdrant.client.grpc.Points.Expression expr)
      +
      Creates an Points.Expression representing exponential.
      +
      +
      Parameters:
      +
      expr - The expression to apply exponential to
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      log10

      +
      public static io.qdrant.client.grpc.Points.Expression log10(io.qdrant.client.grpc.Points.Expression expr)
      +
      Creates an Points.Expression representing base-10 logarithm.
      +
      +
      Parameters:
      +
      expr - The expression to apply log10() to
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      ln

      +
      public static io.qdrant.client.grpc.Points.Expression ln(io.qdrant.client.grpc.Points.Expression expr)
      +
      Creates an Points.Expression representing natural logarithm.
      +
      +
      Parameters:
      +
      expr - The expression to apply natural log to
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      expDecay

      +
      public static io.qdrant.client.grpc.Points.Expression expDecay(io.qdrant.client.grpc.Points.DecayParamsExpression decay)
      +
      Creates an Points.Expression representing exponential decay.
      +
      +
      Parameters:
      +
      decay - The decay parameters
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      gaussDecay

      +
      public static io.qdrant.client.grpc.Points.Expression gaussDecay(io.qdrant.client.grpc.Points.DecayParamsExpression decay)
      +
      Creates an Points.Expression representing Gaussian decay.
      +
      +
      Parameters:
      +
      decay - The decay parameters
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    • +
      +

      linDecay

      +
      public static io.qdrant.client.grpc.Points.Expression linDecay(io.qdrant.client.grpc.Points.DecayParamsExpression decay)
      +
      Creates an Points.Expression representing linear decay.
      +
      +
      Parameters:
      +
      decay - The decay parameters
      +
      Returns:
      +
      a new instance of Points.Expression
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/MetadataCredentials.html b/io/qdrant/client/MetadataCredentials.html new file mode 100644 index 00000000..52517559 --- /dev/null +++ b/io/qdrant/client/MetadataCredentials.html @@ -0,0 +1,190 @@ + + + + +MetadataCredentials (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class MetadataCredentials

+
+
java.lang.Object +
io.grpc.CallCredentials +
io.qdrant.client.MetadataCredentials
+
+
+
+
+
public class MetadataCredentials +extends io.grpc.CallCredentials
+
Used internally by the client to send the API key and any headers as gRPC metadata.
+
+
+
    + +
  • +
    +

    Nested Class Summary

    +
    +

    Nested classes/interfaces inherited from class io.grpc.CallCredentials

    +io.grpc.CallCredentials.MetadataApplier, io.grpc.CallCredentials.RequestInfo
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
    +
    Instantiates a new instance of MetadataCredentials
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    void
    +
    applyRequestMetadata(io.grpc.CallCredentials.RequestInfo requestInfo, + Executor appExecutor, + io.grpc.CallCredentials.MetadataApplier applier)
    +
     
    +
    +
    +
    +
    +

    Methods inherited from class io.grpc.CallCredentials

    +thisUsesUnstableApi
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      MetadataCredentials

      +
      public MetadataCredentials(@Nullable + String apiKey, + Map<String,String> headers)
      +
      Instantiates a new instance of MetadataCredentials
      +
      +
      Parameters:
      +
      apiKey - The API key to use for authentication.
      +
      headers - Custom headers to send with every request.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      applyRequestMetadata

      +
      public void applyRequestMetadata(io.grpc.CallCredentials.RequestInfo requestInfo, + Executor appExecutor, + io.grpc.CallCredentials.MetadataApplier applier)
      +
      +
      Specified by:
      +
      applyRequestMetadata in class io.grpc.CallCredentials
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/PointIdFactory.html b/io/qdrant/client/PointIdFactory.html new file mode 100644 index 00000000..e93f7c40 --- /dev/null +++ b/io/qdrant/client/PointIdFactory.html @@ -0,0 +1,157 @@ + + + + +PointIdFactory (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class PointIdFactory

+
+
java.lang.Object +
io.qdrant.client.PointIdFactory
+
+
+
+
public final class PointIdFactory +extends Object
+
Convenience methods for constructing Common.PointId
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.Common.PointId
    +
    id(long id)
    +
    +
    Creates a point id from a long
    +
    +
    static io.qdrant.client.grpc.Common.PointId
    +
    id(UUID id)
    +
    +
    Creates a point id from a UUID
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      id

      +
      public static io.qdrant.client.grpc.Common.PointId id(long id)
      +
      Creates a point id from a long
      +
      +
      Parameters:
      +
      id - The id
      +
      Returns:
      +
      a new instance of Common.PointId
      +
      +
      +
    • +
    • +
      +

      id

      +
      public static io.qdrant.client.grpc.Common.PointId id(UUID id)
      +
      Creates a point id from a UUID
      +
      +
      Parameters:
      +
      id - The id
      +
      Returns:
      +
      a new instance of Common.PointId
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/QdrantClient.html b/io/qdrant/client/QdrantClient.html new file mode 100644 index 00000000..ddafc71c --- /dev/null +++ b/io/qdrant/client/QdrantClient.html @@ -0,0 +1,4071 @@ + + + + +QdrantClient (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class QdrantClient

+
+
java.lang.Object +
io.qdrant.client.QdrantClient
+
+
+
+
All Implemented Interfaces:
+
AutoCloseable
+
+
+
public class QdrantClient +extends Object +implements AutoCloseable
+
Client for the Qdrant vector database.
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
    +
    Creates a new instance of QdrantClient
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.UpdateResult>>
    +
    batchUpdateAsync(io.qdrant.client.grpc.Points.UpdateBatchPoints request, + Duration timeout)
    +
    +
    Performs a batch update of points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.UpdateResult>>
    +
    batchUpdateAsync(String collectionName, + List<io.qdrant.client.grpc.Points.PointsUpdateOperation> operations)
    +
    +
    Performs a batch update of points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.UpdateResult>>
    +
    batchUpdateAsync(String collectionName, + List<io.qdrant.client.grpc.Points.PointsUpdateOperation> operations, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrdering ordering, + Duration timeout)
    +
    +
    Performs a batch update of points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    clearPayloadAsync(io.qdrant.client.grpc.Points.ClearPayloadPoints request, + Duration timeout)
    +
    +
    Removes all payload for the points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    clearPayloadAsync(String collectionName, + io.qdrant.client.grpc.Common.Filter filter, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Removes all payload for the filtered points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    clearPayloadAsync(String collectionName, + io.qdrant.client.grpc.Common.PointId id, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Removes all payload for the given id.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    clearPayloadAsync(String collectionName, + io.qdrant.client.grpc.Points.PointsSelector pointsSelector, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Removes all payload for the points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    clearPayloadAsync(String collectionName, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Remove all payload for all points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    clearPayloadAsync(String collectionName, + List<io.qdrant.client.grpc.Common.PointId> ids, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Removes all payload for the given ids.
    +
    +
    void
    + +
     
    +
    com.google.common.util.concurrent.ListenableFuture<Boolean>
    +
    collectionExistsAsync(String collectionName)
    +
    +
    Check if a collection exists
    +
    +
    com.google.common.util.concurrent.ListenableFuture<Boolean>
    +
    collectionExistsAsync(String collectionName, + Duration timeout)
    +
    +
    Check if a collection exists
    +
    +
    com.google.common.util.concurrent.ListenableFuture<Long>
    +
    countAsync(String collectionName)
    +
    +
    Count the points in a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<Long>
    +
    countAsync(String collectionName, + io.qdrant.client.grpc.Common.Filter filter, + Boolean exact)
    +
    +
    Count the points in a collection with the given filtering conditions.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<Long>
    +
    countAsync(String collectionName, + io.qdrant.client.grpc.Common.Filter filter, + Boolean exact, + Duration timeout)
    +
    +
    Count the points in a collection with the given filtering conditions.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<Long>
    +
    countAsync(String collectionName, + Duration timeout)
    +
    +
    Count the points in a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    createAliasAsync(String aliasName, + String collectionName)
    +
    +
    Creates an alias for a given collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    createAliasAsync(String aliasName, + String collectionName, + Duration timeout)
    +
    +
    Creates an alias for a given collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    createCollectionAsync(io.qdrant.client.grpc.Collections.CreateCollection createCollection)
    +
    +
    Creates a new collection with the given parameters
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    createCollectionAsync(io.qdrant.client.grpc.Collections.CreateCollection createCollection, + Duration timeout)
    +
    +
    Creates a new collection with the given parameters
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    createCollectionAsync(String collectionName, + io.qdrant.client.grpc.Collections.VectorParams vectorParams)
    +
    +
    Creates a new collection with the given parameters
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    createCollectionAsync(String collectionName, + io.qdrant.client.grpc.Collections.VectorParams vectorParams, + Duration timeout)
    +
    +
    Creates a new collection with the given parameters
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    createCollectionAsync(String collectionName, + Map<String,io.qdrant.client.grpc.Collections.VectorParams> namedVectorParams)
    +
    +
    Creates a new collection with the given parameters
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    createCollectionAsync(String collectionName, + Map<String,io.qdrant.client.grpc.Collections.VectorParams> namedVectorParams, + Duration timeout)
    +
    +
    Creates a new collection with the given parameters
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription>
    + +
    +
    Create snapshot for a whole storage.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription>
    + +
    +
    Create snapshot for a whole storage.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    createPayloadIndexAsync(io.qdrant.client.grpc.Points.CreateFieldIndexCollection request, + Duration timeout)
    +
    +
    Creates a payload field index in a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    createPayloadIndexAsync(String collectionName, + String field, + io.qdrant.client.grpc.Collections.PayloadSchemaType schemaType, + io.qdrant.client.grpc.Collections.PayloadIndexParams indexParams, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Creates a payload field index in a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CreateShardKeyResponse>
    +
    createShardKeyAsync(io.qdrant.client.grpc.Collections.CreateShardKeyRequest createShardKey)
    +
    +
    Creates a shard key for a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CreateShardKeyResponse>
    +
    createShardKeyAsync(io.qdrant.client.grpc.Collections.CreateShardKeyRequest createShardKey, + Duration timeout)
    +
    +
    Creates a shard key for a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription>
    +
    createSnapshotAsync(String collectionName)
    +
    +
    Create snapshot for a given collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription>
    +
    createSnapshotAsync(String collectionName, + Duration timeout)
    +
    +
    Create snapshot for a given collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    createVectorNameAsync(io.qdrant.client.grpc.Points.CreateVectorNameRequest request)
    +
    +
    Creates a new named vector on a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    createVectorNameAsync(io.qdrant.client.grpc.Points.CreateVectorNameRequest request, + Duration timeout)
    +
    +
    Creates a new named vector on a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    + +
    +
    Deletes an alias.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    deleteAliasAsync(String aliasName, + Duration timeout)
    +
    +
    Deletes an alias.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteAsync(io.qdrant.client.grpc.Points.DeletePoints request)
    +
    +
    Deletes points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteAsync(io.qdrant.client.grpc.Points.DeletePoints request, + Duration timeout)
    +
    +
    Deletes points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteAsync(String collectionName, + io.qdrant.client.grpc.Common.Filter filter)
    +
    +
    Deletes points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteAsync(String collectionName, + io.qdrant.client.grpc.Common.Filter filter, + Duration timeout)
    +
    +
    Deletes points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteAsync(String collectionName, + List<io.qdrant.client.grpc.Common.PointId> ids)
    +
    +
    Deletes points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteAsync(String collectionName, + List<io.qdrant.client.grpc.Common.PointId> ids, + Duration timeout)
    +
    +
    Deletes points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    deleteCollectionAsync(String collectionName)
    +
    +
    Deletes a collection and all its associated data.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    deleteCollectionAsync(String collectionName, + Duration timeout)
    +
    +
    Deletes a collection and all its associated data.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.DeleteSnapshotResponse>
    + +
    +
    Delete snapshot for a whole storage.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.DeleteSnapshotResponse>
    +
    deleteFullSnapshotAsync(String snapshotName, + Duration timeout)
    +
    +
    Delete snapshot for a whole storage.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deletePayloadAsync(io.qdrant.client.grpc.Points.DeletePayloadPoints request, + Duration timeout)
    +
    +
    Delete specified key payload for the points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deletePayloadAsync(String collectionName, + List<String> keys, + io.qdrant.client.grpc.Common.Filter filter, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Delete specified key payload for the filtered points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deletePayloadAsync(String collectionName, + List<String> keys, + io.qdrant.client.grpc.Common.PointId id, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Delete specified key payload for the given id.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deletePayloadAsync(String collectionName, + List<String> keys, + io.qdrant.client.grpc.Points.PointsSelector pointsSelector, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Delete specified key payload for the points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deletePayloadAsync(String collectionName, + List<String> keys, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Delete specified key payload for all points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deletePayloadAsync(String collectionName, + List<String> keys, + List<io.qdrant.client.grpc.Common.PointId> ids, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Delete specified key payload for the given ids.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deletePayloadIndexAsync(String collectionName, + String field, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Deletes a payload field index in a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.DeleteShardKeyResponse>
    +
    deleteShardKeyAsync(io.qdrant.client.grpc.Collections.DeleteShardKeyRequest deleteShardKey)
    +
    +
    Deletes a shard key for a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.DeleteShardKeyResponse>
    +
    deleteShardKeyAsync(io.qdrant.client.grpc.Collections.DeleteShardKeyRequest deleteShardKey, + Duration timeout)
    +
    +
    Deletes a shard key for a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.DeleteSnapshotResponse>
    +
    deleteSnapshotAsync(String collectionName, + String snapshotName)
    +
    +
    Delete snapshot for a given collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.DeleteSnapshotResponse>
    +
    deleteSnapshotAsync(String collectionName, + String snapshotName, + Duration timeout)
    +
    +
    Delete snapshot for a given collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteVectorNameAsync(io.qdrant.client.grpc.Points.DeleteVectorNameRequest request)
    +
    +
    Deletes a named vector from a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteVectorNameAsync(io.qdrant.client.grpc.Points.DeleteVectorNameRequest request, + Duration timeout)
    +
    +
    Deletes a named vector from a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteVectorsAsync(io.qdrant.client.grpc.Points.DeletePointVectors request, + Duration timeout)
    +
    +
    Delete named vectors for points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteVectorsAsync(String collectionName, + List<String> vectors, + io.qdrant.client.grpc.Common.Filter filter)
    +
    +
    Delete named vectors for points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteVectorsAsync(String collectionName, + List<String> vectors, + io.qdrant.client.grpc.Common.Filter filter, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Delete named vectors for points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteVectorsAsync(String collectionName, + List<String> vectors, + io.qdrant.client.grpc.Common.Filter filter, + Duration timeout)
    +
    +
    Delete named vectors for points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteVectorsAsync(String collectionName, + List<String> vectors, + io.qdrant.client.grpc.Points.PointsSelector pointsSelector, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Delete named vectors for points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteVectorsAsync(String collectionName, + List<String> vectors, + List<io.qdrant.client.grpc.Common.PointId> ids)
    +
    +
    Delete named vectors for points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteVectorsAsync(String collectionName, + List<String> vectors, + List<io.qdrant.client.grpc.Common.PointId> ids, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Delete named vectors for points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    deleteVectorsAsync(String collectionName, + List<String> vectors, + List<io.qdrant.client.grpc.Common.PointId> ids, + Duration timeout)
    +
    +
    Delete named vectors for points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>>
    +
    discoverAsync(io.qdrant.client.grpc.Points.DiscoverPoints request)
    +
    +
    Use the context and a target to find the most similar points to the target.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>>
    +
    discoverAsync(io.qdrant.client.grpc.Points.DiscoverPoints request, + Duration timeout)
    +
    +
    Use the context and a target to find the most similar points to the target.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>>
    +
    discoverBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.DiscoverPoints> discoverSearches, + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
    +
    +
    Use the context and a target to find the most similar points to the target in a batch.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>>
    +
    discoverBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.DiscoverPoints> discoverSearches, + io.qdrant.client.grpc.Points.ReadConsistency readConsistency, + Duration timeout)
    +
    +
    Use the context and a target to find the most similar points to the target in a batch.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.FacetHit>>
    +
    facetAsync(io.qdrant.client.grpc.Points.FacetCounts request)
    +
    +
    Perform facet counts.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.FacetHit>>
    +
    facetAsync(io.qdrant.client.grpc.Points.FacetCounts request, + Duration timeout)
    +
    +
    Perform facet counts.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionClusterInfoResponse>
    + +
    +
    Gets detailed information about a collection's cluster setup.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionClusterInfoResponse>
    +
    getCollectionClusterInfoAsync(String collectionName, + Duration timeout)
    +
    +
    Gets detailed information about a collection's cluster setup.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionInfo>
    + +
    +
    Gets detailed information about an existing collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionInfo>
    +
    getCollectionInfoAsync(String collectionName, + Duration timeout)
    +
    +
    Gets detailed information about an existing collection.
    +
    + + +
    +
    Gets the low-level gRPC client.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.QdrantOuterClass.HealthCheckReply>
    + +
    +
    Gets detailed information about the qdrant cluster.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.QdrantOuterClass.HealthCheckReply>
    + +
    +
    Gets detailed information about the qdrant cluster.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Collections.AliasDescription>>
    + +
    +
    Gets a list of all aliases for all existing collections.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Collections.AliasDescription>>
    + +
    +
    Gets a list of all aliases for all existing collections.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<String>>
    + +
    +
    Gets a list of all aliases for a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<String>>
    +
    listCollectionAliasesAsync(String collectionName, + Duration timeout)
    +
    +
    Gets a list of all aliases for a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<String>>
    + +
    +
    Gets the names of all existing collections
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<String>>
    + +
    +
    Gets the names of all existing collections
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription>>
    + +
    +
    Get list of snapshots for a whole storage.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription>>
    + +
    +
    Get list of snapshots for a whole storage.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Collections.ShardKeyDescription>>
    +
    listShardKeysAsync(String collectionName)
    +
    +
    List the shard keys of a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Collections.ShardKeyDescription>>
    +
    listShardKeysAsync(String collectionName, + Duration timeout)
    +
    +
    List the shard keys of a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription>>
    +
    listSnapshotAsync(String collectionName)
    +
    +
    Get list of snapshots for a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription>>
    +
    listSnapshotAsync(String collectionName, + Duration timeout)
    +
    +
    Get list of snapshots for a collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    overwritePayloadAsync(io.qdrant.client.grpc.Points.SetPayloadPoints request, + Duration timeout)
    +
    +
    Overwrites the payload for the points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    overwritePayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + io.qdrant.client.grpc.Common.Filter filter, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Overwrites the payload for the filtered points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    overwritePayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + io.qdrant.client.grpc.Common.PointId id, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Overwrites the payload for the given id.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    overwritePayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + io.qdrant.client.grpc.Points.PointsSelector pointsSelector, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Overwrites the payload for the points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    overwritePayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + io.qdrant.client.grpc.Points.PointsSelector pointsSelector, + Boolean wait, + String key, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Overwrites the payload for the points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    overwritePayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Overwrites the payload for all points in the collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    overwritePayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + List<io.qdrant.client.grpc.Common.PointId> ids, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Overwrites the payload for the given ids.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>>
    +
    queryAsync(io.qdrant.client.grpc.Points.QueryPoints request)
    +
    +
    Universally query points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>>
    +
    queryAsync(io.qdrant.client.grpc.Points.QueryPoints request, + Duration timeout)
    +
    +
    Universally query points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>>
    +
    queryBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.QueryPoints> queries)
    +
    +
    Universally query points in batch.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>>
    +
    queryBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.QueryPoints> queries, + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
    +
    +
    Universally query points in batch.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>>
    +
    queryBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.QueryPoints> queries, + io.qdrant.client.grpc.Points.ReadConsistency readConsistency, + Duration timeout)
    +
    +
    Universally query points in batch.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.PointGroup>>
    +
    queryGroupsAsync(io.qdrant.client.grpc.Points.QueryPointGroups request)
    +
    +
    Universally query points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.PointGroup>>
    +
    queryGroupsAsync(io.qdrant.client.grpc.Points.QueryPointGroups request, + Duration timeout)
    +
    +
    Universally query points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>>
    +
    recommendAsync(io.qdrant.client.grpc.Points.RecommendPoints request)
    +
    +
    Look for the points which are closer to stored positive examples and at the same time further + to negative examples.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>>
    +
    recommendAsync(io.qdrant.client.grpc.Points.RecommendPoints request, + Duration timeout)
    +
    +
    Look for the points which are closer to stored positive examples and at the same time further + to negative examples.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>>
    +
    recommendBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.RecommendPoints> recommendSearches, + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
    +
    +
    Look for the points which are closer to stored positive examples and at the same time further + to negative examples.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>>
    +
    recommendBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.RecommendPoints> recommendSearches, + io.qdrant.client.grpc.Points.ReadConsistency readConsistency, + Duration timeout)
    +
    +
    Look for the points which are closer to stored positive examples and at the same time further + to negative examples.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.PointGroup>>
    +
    recommendGroupsAsync(io.qdrant.client.grpc.Points.RecommendPointGroups request)
    +
    +
    Look for the points which are closer to stored positive examples and at the same time further + to negative examples, grouped by a given field
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.PointGroup>>
    +
    recommendGroupsAsync(io.qdrant.client.grpc.Points.RecommendPointGroups request, + Duration timeout)
    +
    +
    Look for the points which are closer to stored positive examples and at the same time further + to negative examples, grouped by a given field
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    recreateCollectionAsync(io.qdrant.client.grpc.Collections.CreateCollection createCollection)
    +
    +
    Deletes a collection if one exists, and creates a new collection with the given parameters.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    recreateCollectionAsync(io.qdrant.client.grpc.Collections.CreateCollection createCollection, + Duration timeout)
    +
    +
    Deletes a collection if one exists, and creates a new collection with the given parameters.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    recreateCollectionAsync(String collectionName, + io.qdrant.client.grpc.Collections.VectorParams vectorParams)
    +
    +
    Deletes a collection if one exists, and creates a new collection with the given parameters.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    recreateCollectionAsync(String collectionName, + io.qdrant.client.grpc.Collections.VectorParams vectorParams, + Duration timeout)
    +
    +
    Deletes a collection if one exists, and creates a new collection with the given parameters.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    recreateCollectionAsync(String collectionName, + Map<String,io.qdrant.client.grpc.Collections.VectorParams> namedVectorParams)
    +
    +
    Deletes a collection if one exists, and creates a new collection with the given parameters.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    recreateCollectionAsync(String collectionName, + Map<String,io.qdrant.client.grpc.Collections.VectorParams> namedVectorParams, + Duration timeout)
    +
    +
    Deletes a collection if one exists, and creates a new collection with the given parameters.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    renameAliasAsync(String oldAliasName, + String newAliasName)
    +
    +
    Renames an existing alias.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    renameAliasAsync(String oldAliasName, + String newAliasName, + Duration timeout)
    +
    +
    Renames an existing alias.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.RetrievedPoint>>
    +
    retrieveAsync(io.qdrant.client.grpc.Points.GetPoints request, + Duration timeout)
    +
    +
    Retrieves points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.RetrievedPoint>>
    +
    retrieveAsync(String collectionName, + io.qdrant.client.grpc.Common.PointId id, + boolean withPayload, + boolean withVectors, + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
    +
    +
    Retrieves points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.RetrievedPoint>>
    +
    retrieveAsync(String collectionName, + io.qdrant.client.grpc.Common.PointId id, + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
    +
    +
    Retrieves points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.RetrievedPoint>>
    +
    retrieveAsync(String collectionName, + List<io.qdrant.client.grpc.Common.PointId> ids, + boolean withPayload, + boolean withVectors, + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
    +
    +
    Retrieves points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.RetrievedPoint>>
    +
    retrieveAsync(String collectionName, + List<io.qdrant.client.grpc.Common.PointId> ids, + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
    +
    +
    Retrieves points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.RetrievedPoint>>
    +
    retrieveAsync(String collectionName, + List<io.qdrant.client.grpc.Common.PointId> ids, + io.qdrant.client.grpc.Points.WithPayloadSelector payloadSelector, + io.qdrant.client.grpc.Points.WithVectorsSelector vectorsSelector, + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
    +
    +
    Retrieves points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.RetrievedPoint>>
    +
    retrieveAsync(String collectionName, + List<io.qdrant.client.grpc.Common.PointId> ids, + io.qdrant.client.grpc.Points.WithPayloadSelector payloadSelector, + io.qdrant.client.grpc.Points.WithVectorsSelector vectorsSelector, + io.qdrant.client.grpc.Points.ReadConsistency readConsistency, + Duration timeout)
    +
    +
    Retrieves points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.ScrollResponse>
    +
    scrollAsync(io.qdrant.client.grpc.Points.ScrollPoints request)
    +
    +
    Iterates over all or filtered points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.ScrollResponse>
    +
    scrollAsync(io.qdrant.client.grpc.Points.ScrollPoints request, + Duration timeout)
    +
    +
    Iterates over all or filtered points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>>
    +
    searchAsync(io.qdrant.client.grpc.Points.SearchPoints request)
    +
    +
    Retrieves closest points based on vector similarity and the given filtering conditions.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>>
    +
    searchAsync(io.qdrant.client.grpc.Points.SearchPoints request, + Duration timeout)
    +
    +
    Retrieves closest points based on vector similarity and the given filtering conditions.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>>
    +
    searchBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.SearchPoints> searches, + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
    +
    +
    Retrieves closest points based on vector similarity and the given filtering conditions.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>>
    +
    searchBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.SearchPoints> searches, + io.qdrant.client.grpc.Points.ReadConsistency readConsistency, + Duration timeout)
    +
    +
    Retrieves closest points based on vector similarity and the given filtering conditions.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.PointGroup>>
    +
    searchGroupsAsync(io.qdrant.client.grpc.Points.SearchPointGroups request)
    +
    +
    Retrieves closest points based on vector similarity and the given filtering conditions, grouped + by a given field.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.PointGroup>>
    +
    searchGroupsAsync(io.qdrant.client.grpc.Points.SearchPointGroups request, + Duration timeout)
    +
    +
    Retrieves closest points based on vector similarity and the given filtering conditions, grouped + by a given field.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.SearchMatrixOffsets>
    +
    searchMatrixOffsetsAsync(io.qdrant.client.grpc.Points.SearchMatrixPoints request)
    +
    +
    Compute distance matrix for sampled points with an offset based output format
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.SearchMatrixOffsets>
    +
    searchMatrixOffsetsAsync(io.qdrant.client.grpc.Points.SearchMatrixPoints request, + Duration timeout)
    +
    +
    Compute distance matrix for sampled points with an offset based output format
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.SearchMatrixPairs>
    +
    searchMatrixPairsAsync(io.qdrant.client.grpc.Points.SearchMatrixPoints request)
    +
    +
    Compute distance matrix for sampled points with a pair based output format.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.SearchMatrixPairs>
    +
    searchMatrixPairsAsync(io.qdrant.client.grpc.Points.SearchMatrixPoints request, + Duration timeout)
    +
    +
    Compute distance matrix for sampled points with a pair based output format.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    setPayloadAsync(io.qdrant.client.grpc.Points.SetPayloadPoints request, + Duration timeout)
    +
    +
    Sets the payload for the points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    setPayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + io.qdrant.client.grpc.Common.Filter filter, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Sets the payload for the given ids.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    setPayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + io.qdrant.client.grpc.Common.PointId id, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Sets the payload for the given id.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    setPayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + io.qdrant.client.grpc.Points.PointsSelector pointsSelector, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Sets the payload for the points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    setPayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + io.qdrant.client.grpc.Points.PointsSelector pointsSelector, + Boolean wait, + String key, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Sets the payload for the points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    setPayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Sets the payload for all points in the collection.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    setPayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + List<io.qdrant.client.grpc.Common.PointId> ids, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Sets the payload for the given ids.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    updateAliasesAsync(List<io.qdrant.client.grpc.Collections.AliasOperations> aliasOperations)
    +
    +
    Update the aliases of existing collections.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    updateAliasesAsync(List<io.qdrant.client.grpc.Collections.AliasOperations> aliasOperations, + Duration timeout)
    +
    +
    Update the aliases of existing collections.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    updateCollectionAsync(io.qdrant.client.grpc.Collections.UpdateCollection updateCollection)
    +
    +
    Update parameters of the collection
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse>
    +
    updateCollectionAsync(io.qdrant.client.grpc.Collections.UpdateCollection updateCollection, + Duration timeout)
    +
    +
    Update parameters of the collection
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.UpdateCollectionClusterSetupResponse>
    +
    updateCollectionClusterSetupAsync(io.qdrant.client.grpc.Collections.UpdateCollectionClusterSetupRequest updateCollectionClusterSetup)
    +
    +
    Update cluster setup for a collection
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.UpdateCollectionClusterSetupResponse>
    +
    updateCollectionClusterSetupAsync(io.qdrant.client.grpc.Collections.UpdateCollectionClusterSetupRequest updateCollectionClusterSetup, + Duration timeout)
    +
    +
    Update cluster setup for a collection
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    updateVectorsAsync(io.qdrant.client.grpc.Points.UpdatePointVectors request)
    +
    +
    Update named vectors for point.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    updateVectorsAsync(io.qdrant.client.grpc.Points.UpdatePointVectors request, + Duration timeout)
    +
    +
    Update named vectors for point.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    updateVectorsAsync(String collectionName, + List<io.qdrant.client.grpc.Points.PointVectors> points)
    +
    +
    Update named vectors for point.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    updateVectorsAsync(String collectionName, + List<io.qdrant.client.grpc.Points.PointVectors> points, + Boolean wait, + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + Duration timeout)
    +
    +
    Update named vectors for point.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    updateVectorsAsync(String collectionName, + List<io.qdrant.client.grpc.Points.PointVectors> points, + Duration timeout)
    +
    +
    Update named vectors for point.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    upsertAsync(io.qdrant.client.grpc.Points.UpsertPoints request)
    +
    +
    Perform insert and updates on points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    upsertAsync(io.qdrant.client.grpc.Points.UpsertPoints request, + Duration timeout)
    +
    +
    Perform insert and updates on points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    upsertAsync(String collectionName, + List<io.qdrant.client.grpc.Points.PointStruct> points)
    +
    +
    Perform insert and updates on points.
    +
    +
    com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult>
    +
    upsertAsync(String collectionName, + List<io.qdrant.client.grpc.Points.PointStruct> points, + Duration timeout)
    +
    +
    Perform insert and updates on points.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      QdrantClient

      +
      public QdrantClient(QdrantGrpcClient grpcClient)
      +
      Creates a new instance of QdrantClient
      +
      +
      Parameters:
      +
      grpcClient - The low-level gRPC client to use.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      grpcClient

      +
      public QdrantGrpcClient grpcClient()
      +
      Gets the low-level gRPC client. This is exposed to + +
        +
      • Allow access to the underlying gRPC channel +
      • Allow access to the gRPC client to make requests using the low-level gRPC client in cases + where functionality may not yet be exposed by the higher level client. +
      +
      +
      Returns:
      +
      The low-level gRPC client
      +
      +
      +
    • +
    • +
      +

      healthCheckAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.QdrantOuterClass.HealthCheckReply> healthCheckAsync()
      +
      Gets detailed information about the qdrant cluster.
      +
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      healthCheckAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.QdrantOuterClass.HealthCheckReply> healthCheckAsync(@Nullable + Duration timeout)
      +
      Gets detailed information about the qdrant cluster.
      +
      +
      Parameters:
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> createCollectionAsync(String collectionName, + io.qdrant.client.grpc.Collections.VectorParams vectorParams)
      +
      Creates a new collection with the given parameters
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      vectorParams - The vector parameters
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> createCollectionAsync(String collectionName, + io.qdrant.client.grpc.Collections.VectorParams vectorParams, + @Nullable + Duration timeout)
      +
      Creates a new collection with the given parameters
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      vectorParams - The vector parameters
      +
      timeout - The timeout for the call
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> createCollectionAsync(String collectionName, + Map<String,io.qdrant.client.grpc.Collections.VectorParams> namedVectorParams)
      +
      Creates a new collection with the given parameters
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      namedVectorParams - The named vector parameters
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> createCollectionAsync(String collectionName, + Map<String,io.qdrant.client.grpc.Collections.VectorParams> namedVectorParams, + @Nullable + Duration timeout)
      +
      Creates a new collection with the given parameters
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      namedVectorParams - The named vector parameters
      +
      timeout - The timeout for the call
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> createCollectionAsync(io.qdrant.client.grpc.Collections.CreateCollection createCollection)
      +
      Creates a new collection with the given parameters
      +
      +
      Parameters:
      +
      createCollection - The collection creation parameters
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> createCollectionAsync(io.qdrant.client.grpc.Collections.CreateCollection createCollection, + @Nullable + Duration timeout)
      +
      Creates a new collection with the given parameters
      +
      +
      Parameters:
      +
      createCollection - The collection creation parameters
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      recreateCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> recreateCollectionAsync(String collectionName, + io.qdrant.client.grpc.Collections.VectorParams vectorParams)
      +
      Deletes a collection if one exists, and creates a new collection with the given parameters.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      vectorParams - The vector parameters
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      recreateCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> recreateCollectionAsync(String collectionName, + io.qdrant.client.grpc.Collections.VectorParams vectorParams, + @Nullable + Duration timeout)
      +
      Deletes a collection if one exists, and creates a new collection with the given parameters.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      vectorParams - The vector parameters
      +
      timeout - The timeout for the call
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      recreateCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> recreateCollectionAsync(String collectionName, + Map<String,io.qdrant.client.grpc.Collections.VectorParams> namedVectorParams)
      +
      Deletes a collection if one exists, and creates a new collection with the given parameters.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      namedVectorParams - The named vector parameters
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      recreateCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> recreateCollectionAsync(String collectionName, + Map<String,io.qdrant.client.grpc.Collections.VectorParams> namedVectorParams, + @Nullable + Duration timeout)
      +
      Deletes a collection if one exists, and creates a new collection with the given parameters.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      namedVectorParams - The named vector parameters
      +
      timeout - The timeout for the call
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      recreateCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> recreateCollectionAsync(io.qdrant.client.grpc.Collections.CreateCollection createCollection)
      +
      Deletes a collection if one exists, and creates a new collection with the given parameters.
      +
      +
      Parameters:
      +
      createCollection - The collection creation parameters
      +
      Returns:
      +
      a new instance of Collections.CollectionOperationResponse
      +
      +
      +
    • +
    • +
      +

      recreateCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> recreateCollectionAsync(io.qdrant.client.grpc.Collections.CreateCollection createCollection, + @Nullable + Duration timeout)
      +
      Deletes a collection if one exists, and creates a new collection with the given parameters.
      +
      +
      Parameters:
      +
      createCollection - The collection creation parameters
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of Collections.CollectionOperationResponse
      +
      +
      +
    • +
    • +
      +

      getCollectionInfoAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionInfo> getCollectionInfoAsync(String collectionName)
      +
      Gets detailed information about an existing collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      getCollectionInfoAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionInfo> getCollectionInfoAsync(String collectionName, + @Nullable + Duration timeout)
      +
      Gets detailed information about an existing collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      getCollectionClusterInfoAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionClusterInfoResponse> getCollectionClusterInfoAsync(String collectionName)
      +
      Gets detailed information about a collection's cluster setup.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      getCollectionClusterInfoAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionClusterInfoResponse> getCollectionClusterInfoAsync(String collectionName, + @Nullable + Duration timeout)
      +
      Gets detailed information about a collection's cluster setup.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> deleteCollectionAsync(String collectionName)
      +
      Deletes a collection and all its associated data.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> deleteCollectionAsync(String collectionName, + @Nullable + Duration timeout)
      +
      Deletes a collection and all its associated data.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      listCollectionsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<String>> listCollectionsAsync()
      +
      Gets the names of all existing collections
      +
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      listCollectionsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<String>> listCollectionsAsync(@Nullable + Duration timeout)
      +
      Gets the names of all existing collections
      +
      +
      Parameters:
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      updateCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> updateCollectionAsync(io.qdrant.client.grpc.Collections.UpdateCollection updateCollection)
      +
      Update parameters of the collection
      +
      +
      Parameters:
      +
      updateCollection - The update parameters.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      updateCollectionAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> updateCollectionAsync(io.qdrant.client.grpc.Collections.UpdateCollection updateCollection, + @Nullable + Duration timeout)
      +
      Update parameters of the collection
      +
      +
      Parameters:
      +
      updateCollection - The update parameters.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      updateCollectionClusterSetupAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.UpdateCollectionClusterSetupResponse> updateCollectionClusterSetupAsync(io.qdrant.client.grpc.Collections.UpdateCollectionClusterSetupRequest updateCollectionClusterSetup)
      +
      Update cluster setup for a collection
      +
      +
      Parameters:
      +
      updateCollectionClusterSetup - The update parameters.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      updateCollectionClusterSetupAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.UpdateCollectionClusterSetupResponse> updateCollectionClusterSetupAsync(io.qdrant.client.grpc.Collections.UpdateCollectionClusterSetupRequest updateCollectionClusterSetup, + @Nullable + Duration timeout)
      +
      Update cluster setup for a collection
      +
      +
      Parameters:
      +
      updateCollectionClusterSetup - The update parameters.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      collectionExistsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<Boolean> collectionExistsAsync(String collectionName)
      +
      Check if a collection exists
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      collectionExistsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<Boolean> collectionExistsAsync(String collectionName, + @Nullable + Duration timeout)
      +
      Check if a collection exists
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createAliasAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> createAliasAsync(String aliasName, + String collectionName)
      +
      Creates an alias for a given collection.
      +
      +
      Parameters:
      +
      aliasName - The alias to be created.
      +
      collectionName - The collection for which the alias is to be created.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createAliasAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> createAliasAsync(String aliasName, + String collectionName, + @Nullable + Duration timeout)
      +
      Creates an alias for a given collection.
      +
      +
      Parameters:
      +
      aliasName - The alias to be created.
      +
      collectionName - The collection for which the alias is to be created.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      renameAliasAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> renameAliasAsync(String oldAliasName, + String newAliasName)
      +
      Renames an existing alias.
      +
      +
      Parameters:
      +
      oldAliasName - The old alias name.
      +
      newAliasName - The new alias name.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      renameAliasAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> renameAliasAsync(String oldAliasName, + String newAliasName, + @Nullable + Duration timeout)
      +
      Renames an existing alias.
      +
      +
      Parameters:
      +
      oldAliasName - The old alias name.
      +
      newAliasName - The new alias name.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteAliasAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> deleteAliasAsync(String aliasName)
      +
      Deletes an alias.
      +
      +
      Parameters:
      +
      aliasName - The alias to be deleted.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteAliasAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> deleteAliasAsync(String aliasName, + @Nullable + Duration timeout)
      +
      Deletes an alias.
      +
      +
      Parameters:
      +
      aliasName - The alias to be deleted.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      updateAliasesAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> updateAliasesAsync(List<io.qdrant.client.grpc.Collections.AliasOperations> aliasOperations)
      +
      Update the aliases of existing collections.
      +
      +
      Parameters:
      +
      aliasOperations - The list of operations to perform.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      updateAliasesAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CollectionOperationResponse> updateAliasesAsync(List<io.qdrant.client.grpc.Collections.AliasOperations> aliasOperations, + @Nullable + Duration timeout)
      +
      Update the aliases of existing collections.
      +
      +
      Parameters:
      +
      aliasOperations - The list of operations to perform.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      listCollectionAliasesAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<String>> listCollectionAliasesAsync(String collectionName)
      +
      Gets a list of all aliases for a collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      listCollectionAliasesAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<String>> listCollectionAliasesAsync(String collectionName, + @Nullable + Duration timeout)
      +
      Gets a list of all aliases for a collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      listAliasesAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Collections.AliasDescription>> listAliasesAsync()
      +
      Gets a list of all aliases for all existing collections.
      +
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      listAliasesAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Collections.AliasDescription>> listAliasesAsync(@Nullable + Duration timeout)
      +
      Gets a list of all aliases for all existing collections.
      +
      +
      Parameters:
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createShardKeyAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CreateShardKeyResponse> createShardKeyAsync(io.qdrant.client.grpc.Collections.CreateShardKeyRequest createShardKey)
      +
      Creates a shard key for a collection.
      +
      +
      Parameters:
      +
      createShardKey - The request object for the operation.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createShardKeyAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.CreateShardKeyResponse> createShardKeyAsync(io.qdrant.client.grpc.Collections.CreateShardKeyRequest createShardKey, + @Nullable + Duration timeout)
      +
      Creates a shard key for a collection.
      +
      +
      Parameters:
      +
      createShardKey - The request object for the operation.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteShardKeyAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.DeleteShardKeyResponse> deleteShardKeyAsync(io.qdrant.client.grpc.Collections.DeleteShardKeyRequest deleteShardKey)
      +
      Deletes a shard key for a collection.
      +
      +
      Parameters:
      +
      deleteShardKey - The request object for the operation.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteShardKeyAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Collections.DeleteShardKeyResponse> deleteShardKeyAsync(io.qdrant.client.grpc.Collections.DeleteShardKeyRequest deleteShardKey, + @Nullable + Duration timeout)
      +
      Deletes a shard key for a collection.
      +
      +
      Parameters:
      +
      deleteShardKey - The request object for the operation.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      listShardKeysAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Collections.ShardKeyDescription>> listShardKeysAsync(String collectionName)
      +
      List the shard keys of a collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection to list shard keys for.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      listShardKeysAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Collections.ShardKeyDescription>> listShardKeysAsync(String collectionName, + @Nullable + Duration timeout)
      +
      List the shard keys of a collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection to list shard keys for.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      upsertAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> upsertAsync(String collectionName, + List<io.qdrant.client.grpc.Points.PointStruct> points)
      +
      Perform insert and updates on points. If a point with a given ID already exists, it will be + overwritten.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      points - The points to be upserted
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      upsertAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> upsertAsync(String collectionName, + List<io.qdrant.client.grpc.Points.PointStruct> points, + @Nullable + Duration timeout)
      +
      Perform insert and updates on points. If a point with a given ID already exists, it will be + overwritten. The call waits for the changes to be applied.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      points - The points to be upserted
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      upsertAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> upsertAsync(io.qdrant.client.grpc.Points.UpsertPoints request)
      +
      Perform insert and updates on points. If a point with a given ID already exists, it will be + overwritten.
      +
      +
      Parameters:
      +
      request - The upsert points request
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      upsertAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> upsertAsync(io.qdrant.client.grpc.Points.UpsertPoints request, + @Nullable + Duration timeout)
      +
      Perform insert and updates on points. If a point with a given ID already exists, it will be + overwritten.
      +
      +
      Parameters:
      +
      request - The upsert points request
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteAsync(String collectionName, + List<io.qdrant.client.grpc.Common.PointId> ids)
      +
      Deletes points. The call waits for the changes to be applied.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      ids - The ids of points to delete.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteAsync(String collectionName, + List<io.qdrant.client.grpc.Common.PointId> ids, + @Nullable + Duration timeout)
      +
      Deletes points. The call waits for the changes to be applied.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      ids - The ids of points to delete.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteAsync(String collectionName, + io.qdrant.client.grpc.Common.Filter filter)
      +
      Deletes points. The call waits for the changes to be applied.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      filter - A filter selecting the points to be deleted.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteAsync(String collectionName, + io.qdrant.client.grpc.Common.Filter filter, + @Nullable + Duration timeout)
      +
      Deletes points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      filter - A filter selecting the points to be deleted.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteAsync(io.qdrant.client.grpc.Points.DeletePoints request)
      +
      Deletes points.
      +
      +
      Parameters:
      +
      request - The delete points request
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteAsync(io.qdrant.client.grpc.Points.DeletePoints request, + @Nullable + Duration timeout)
      +
      Deletes points.
      +
      +
      Parameters:
      +
      request - The delete points request
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      retrieveAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.RetrievedPoint>> retrieveAsync(String collectionName, + io.qdrant.client.grpc.Common.PointId id, + @Nullable + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
      +
      Retrieves points. Includes all payload, excludes vectors.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      id - The id of a point to retrieve
      +
      readConsistency - Options for specifying read consistency guarantees.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      retrieveAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.RetrievedPoint>> retrieveAsync(String collectionName, + io.qdrant.client.grpc.Common.PointId id, + boolean withPayload, + boolean withVectors, + @Nullable + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
      +
      Retrieves points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      id - The id of a point to retrieve
      +
      withPayload - Whether to include the payload or not.
      +
      withVectors - Whether to include the vectors or not.
      +
      readConsistency - Options for specifying read consistency guarantees.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      retrieveAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.RetrievedPoint>> retrieveAsync(String collectionName, + List<io.qdrant.client.grpc.Common.PointId> ids, + @Nullable + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
      +
      Retrieves points. Includes all payload, excludes vectors.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      ids - The list of ids of points to retrieve
      +
      readConsistency - Options for specifying read consistency guarantees.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      retrieveAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.RetrievedPoint>> retrieveAsync(String collectionName, + List<io.qdrant.client.grpc.Common.PointId> ids, + boolean withPayload, + boolean withVectors, + @Nullable + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
      +
      Retrieves points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      ids - The list of ids of points to retrieve
      +
      withPayload - Whether to include the payload or not.
      +
      withVectors - Whether to include the vectors or not.
      +
      readConsistency - Options for specifying read consistency guarantees.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      retrieveAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.RetrievedPoint>> retrieveAsync(String collectionName, + List<io.qdrant.client.grpc.Common.PointId> ids, + io.qdrant.client.grpc.Points.WithPayloadSelector payloadSelector, + io.qdrant.client.grpc.Points.WithVectorsSelector vectorsSelector, + @Nullable + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
      +
      Retrieves points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      ids - The list of ids of points to retrieve
      +
      payloadSelector - Options for specifying which payload to include or not.
      +
      vectorsSelector - Options for specifying which vectors to include into response.
      +
      readConsistency - Options for specifying read consistency guarantees.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      retrieveAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.RetrievedPoint>> retrieveAsync(String collectionName, + List<io.qdrant.client.grpc.Common.PointId> ids, + io.qdrant.client.grpc.Points.WithPayloadSelector payloadSelector, + io.qdrant.client.grpc.Points.WithVectorsSelector vectorsSelector, + @Nullable + io.qdrant.client.grpc.Points.ReadConsistency readConsistency, + @Nullable + Duration timeout)
      +
      Retrieves points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      ids - The list of ids of points to retrieve
      +
      payloadSelector - Options for specifying which payload to include or not.
      +
      vectorsSelector - Options for specifying which vectors to include into response.
      +
      readConsistency - Options for specifying read consistency guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      retrieveAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.RetrievedPoint>> retrieveAsync(io.qdrant.client.grpc.Points.GetPoints request, + @Nullable + Duration timeout)
      +
      Retrieves points.
      +
      +
      Parameters:
      +
      request - The get points request
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      updateVectorsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> updateVectorsAsync(String collectionName, + List<io.qdrant.client.grpc.Points.PointVectors> points)
      +
      Update named vectors for point.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      points - The list of points and vectors to update.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      updateVectorsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> updateVectorsAsync(String collectionName, + List<io.qdrant.client.grpc.Points.PointVectors> points, + @Nullable + Duration timeout)
      +
      Update named vectors for point.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      points - The list of points and vectors to update.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      updateVectorsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> updateVectorsAsync(String collectionName, + List<io.qdrant.client.grpc.Points.PointVectors> points, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Update named vectors for point.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      points - The list of points and vectors to update.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      updateVectorsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> updateVectorsAsync(io.qdrant.client.grpc.Points.UpdatePointVectors request)
      +
      Update named vectors for point.
      +
      +
      Parameters:
      +
      request - The update point vectors request
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      updateVectorsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> updateVectorsAsync(io.qdrant.client.grpc.Points.UpdatePointVectors request, + @Nullable + Duration timeout)
      +
      Update named vectors for point.
      +
      +
      Parameters:
      +
      request - The update point vectors request
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteVectorsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteVectorsAsync(String collectionName, + List<String> vectors, + io.qdrant.client.grpc.Common.Filter filter)
      +
      Delete named vectors for points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      vectors - The list of vector names to delete.
      +
      filter - A filter selecting the points to be deleted.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteVectorsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteVectorsAsync(String collectionName, + List<String> vectors, + io.qdrant.client.grpc.Common.Filter filter, + @Nullable + Duration timeout)
      +
      Delete named vectors for points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      vectors - The list of vector names to delete.
      +
      filter - A filter selecting the points to be deleted.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteVectorsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteVectorsAsync(String collectionName, + List<String> vectors, + io.qdrant.client.grpc.Common.Filter filter, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Delete named vectors for points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      vectors - The list of vector names to delete.
      +
      filter - A filter selecting the points to be deleted.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteVectorsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteVectorsAsync(String collectionName, + List<String> vectors, + List<io.qdrant.client.grpc.Common.PointId> ids)
      +
      Delete named vectors for points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      vectors - The list of vector names to delete.
      +
      ids - The list of ids to delete.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteVectorsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteVectorsAsync(String collectionName, + List<String> vectors, + List<io.qdrant.client.grpc.Common.PointId> ids, + @Nullable + Duration timeout)
      +
      Delete named vectors for points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      vectors - The list of vector names to delete.
      +
      ids - The list of ids to delete.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteVectorsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteVectorsAsync(String collectionName, + List<String> vectors, + List<io.qdrant.client.grpc.Common.PointId> ids, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Delete named vectors for points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      vectors - The list of vector names to delete.
      +
      ids - The list of ids to delete.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteVectorsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteVectorsAsync(String collectionName, + List<String> vectors, + io.qdrant.client.grpc.Points.PointsSelector pointsSelector, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Delete named vectors for points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      vectors - The list of vector names to delete.
      +
      pointsSelector - A selector for the points to be deleted.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteVectorsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteVectorsAsync(io.qdrant.client.grpc.Points.DeletePointVectors request, + @Nullable + Duration timeout)
      +
      Delete named vectors for points.
      +
      +
      Parameters:
      +
      request - The delete point vectors request
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      setPayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> setPayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Sets the payload for all points in the collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      payload - New payload values
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      setPayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> setPayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + io.qdrant.client.grpc.Common.PointId id, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Sets the payload for the given id.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      payload - New payload values
      +
      id - The id for which to set the payload.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      setPayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> setPayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + List<io.qdrant.client.grpc.Common.PointId> ids, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Sets the payload for the given ids.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      payload - New payload values
      +
      ids - The ids for which to set the payload.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      setPayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> setPayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + io.qdrant.client.grpc.Common.Filter filter, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Sets the payload for the given ids.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      payload - New payload values
      +
      filter - A filter selecting the points to be set.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      setPayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> setPayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + @Nullable + io.qdrant.client.grpc.Points.PointsSelector pointsSelector, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Sets the payload for the points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      payload - New payload values
      +
      pointsSelector - selector for the points whose payloads are to be set.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      setPayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> setPayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + @Nullable + io.qdrant.client.grpc.Points.PointsSelector pointsSelector, + @Nullable + Boolean wait, + @Nullable + String key, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Sets the payload for the points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      payload - New payload values
      +
      pointsSelector - Selector for the points whose payloads are to be set.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      key - The key for which to set the payload if nested
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      setPayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> setPayloadAsync(io.qdrant.client.grpc.Points.SetPayloadPoints request, + @Nullable + Duration timeout)
      +
      Sets the payload for the points.
      +
      +
      Parameters:
      +
      request - The set payload request.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      overwritePayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> overwritePayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Overwrites the payload for all points in the collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      payload - New payload values
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      overwritePayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> overwritePayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + io.qdrant.client.grpc.Common.PointId id, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Overwrites the payload for the given id.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      payload - New payload values
      +
      id - The id for which to overwrite the payload.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      overwritePayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> overwritePayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + List<io.qdrant.client.grpc.Common.PointId> ids, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Overwrites the payload for the given ids.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      payload - New payload values
      +
      ids - The ids for which to overwrite the payload.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      overwritePayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> overwritePayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + io.qdrant.client.grpc.Common.Filter filter, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Overwrites the payload for the filtered points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      payload - New payload values
      +
      filter - A filter selecting the points for which to overwrite the payload.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      overwritePayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> overwritePayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + @Nullable + io.qdrant.client.grpc.Points.PointsSelector pointsSelector, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Overwrites the payload for the points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      payload - New payload values
      +
      pointsSelector - A selector for the points whose payloads are to be overwritten.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      overwritePayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> overwritePayloadAsync(String collectionName, + Map<String,io.qdrant.client.grpc.JsonWithInt.Value> payload, + @Nullable + io.qdrant.client.grpc.Points.PointsSelector pointsSelector, + @Nullable + Boolean wait, + @Nullable + String key, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Overwrites the payload for the points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      payload - New payload values
      +
      pointsSelector - Selector for the points whose payloads are to be overwritten.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      key - The key for which to overwrite the payload if nested
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      overwritePayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> overwritePayloadAsync(io.qdrant.client.grpc.Points.SetPayloadPoints request, + @Nullable + Duration timeout)
      +
      Overwrites the payload for the points.
      +
      +
      Parameters:
      +
      request - The overwrite payload request
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deletePayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deletePayloadAsync(String collectionName, + List<String> keys, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Delete specified key payload for all points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      keys - List of keys to delete.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deletePayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deletePayloadAsync(String collectionName, + List<String> keys, + io.qdrant.client.grpc.Common.PointId id, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Delete specified key payload for the given id.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      keys - List of keys to delete.
      +
      id - The id for which to delete the payload.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deletePayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deletePayloadAsync(String collectionName, + List<String> keys, + List<io.qdrant.client.grpc.Common.PointId> ids, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Delete specified key payload for the given ids.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      keys - List of keys to delete.
      +
      ids - The ids for which to delete the payload.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deletePayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deletePayloadAsync(String collectionName, + List<String> keys, + io.qdrant.client.grpc.Common.Filter filter, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Delete specified key payload for the filtered points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      keys - List of keys to delete.
      +
      filter - A filter selecting the points to for which to delete the payload.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deletePayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deletePayloadAsync(String collectionName, + List<String> keys, + @Nullable + io.qdrant.client.grpc.Points.PointsSelector pointsSelector, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Delete specified key payload for the points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      keys - List of keys to delete.
      +
      pointsSelector - selector for the points whose payloads are to be deleted.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deletePayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deletePayloadAsync(io.qdrant.client.grpc.Points.DeletePayloadPoints request, + @Nullable + Duration timeout)
      +
      Delete specified key payload for the points.
      +
      +
      Parameters:
      +
      request - The delete payload request
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      clearPayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> clearPayloadAsync(String collectionName, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Remove all payload for all points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      clearPayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> clearPayloadAsync(String collectionName, + io.qdrant.client.grpc.Common.PointId id, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Removes all payload for the given id.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      id - The id for which to remove the payload.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      clearPayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> clearPayloadAsync(String collectionName, + List<io.qdrant.client.grpc.Common.PointId> ids, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Removes all payload for the given ids.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      ids - The ids for which to remove the payload.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      clearPayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> clearPayloadAsync(String collectionName, + io.qdrant.client.grpc.Common.Filter filter, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Removes all payload for the filtered points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      filter - A filter selecting the points for which to remove the payload.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      clearPayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> clearPayloadAsync(String collectionName, + @Nullable + io.qdrant.client.grpc.Points.PointsSelector pointsSelector, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Removes all payload for the points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      pointsSelector - A selector for the points whose payloads are to be removed.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      clearPayloadAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> clearPayloadAsync(io.qdrant.client.grpc.Points.ClearPayloadPoints request, + @Nullable + Duration timeout)
      +
      Removes all payload for the points.
      +
      +
      Parameters:
      +
      request - The clear payload request
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createPayloadIndexAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> createPayloadIndexAsync(String collectionName, + String field, + io.qdrant.client.grpc.Collections.PayloadSchemaType schemaType, + @Nullable + io.qdrant.client.grpc.Collections.PayloadIndexParams indexParams, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Creates a payload field index in a collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      field - The field name to index.
      +
      schemaType - The schema type of the field.
      +
      indexParams - Payload index parameters.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createPayloadIndexAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> createPayloadIndexAsync(io.qdrant.client.grpc.Points.CreateFieldIndexCollection request, + @Nullable + Duration timeout)
      +
      Creates a payload field index in a collection.
      +
      +
      Parameters:
      +
      request - The create field index request.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deletePayloadIndexAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deletePayloadIndexAsync(String collectionName, + String field, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrderingType ordering, + @Nullable + Duration timeout)
      +
      Deletes a payload field index in a collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      field - The field name to index.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createVectorNameAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> createVectorNameAsync(io.qdrant.client.grpc.Points.CreateVectorNameRequest request)
      +
      Creates a new named vector on a collection.
      +
      +
      Parameters:
      +
      request - The create vector name request.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createVectorNameAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> createVectorNameAsync(io.qdrant.client.grpc.Points.CreateVectorNameRequest request, + @Nullable + Duration timeout)
      +
      Creates a new named vector on a collection.
      +
      +
      Parameters:
      +
      request - The create vector name request.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteVectorNameAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteVectorNameAsync(io.qdrant.client.grpc.Points.DeleteVectorNameRequest request)
      +
      Deletes a named vector from a collection.
      +
      +
      Parameters:
      +
      request - The delete vector name request.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteVectorNameAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.UpdateResult> deleteVectorNameAsync(io.qdrant.client.grpc.Points.DeleteVectorNameRequest request, + @Nullable + Duration timeout)
      +
      Deletes a named vector from a collection.
      +
      +
      Parameters:
      +
      request - The delete vector name request.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      searchAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>> searchAsync(io.qdrant.client.grpc.Points.SearchPoints request)
      +
      Retrieves closest points based on vector similarity and the given filtering conditions.
      +
      +
      Parameters:
      +
      request - the search request
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      searchAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>> searchAsync(io.qdrant.client.grpc.Points.SearchPoints request, + @Nullable + Duration timeout)
      +
      Retrieves closest points based on vector similarity and the given filtering conditions.
      +
      +
      Parameters:
      +
      request - the search request
      +
      timeout - the timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      searchBatchAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>> searchBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.SearchPoints> searches, + @Nullable + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
      +
      Retrieves closest points based on vector similarity and the given filtering conditions.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection
      +
      searches - The searches to be performed in the batch.
      +
      readConsistency - Options for specifying read consistency guarantees.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      searchBatchAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>> searchBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.SearchPoints> searches, + @Nullable + io.qdrant.client.grpc.Points.ReadConsistency readConsistency, + @Nullable + Duration timeout)
      +
      Retrieves closest points based on vector similarity and the given filtering conditions.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection
      +
      searches - The searches to be performed in the batch.
      +
      readConsistency - Options for specifying read consistency guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      searchGroupsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.PointGroup>> searchGroupsAsync(io.qdrant.client.grpc.Points.SearchPointGroups request)
      +
      Retrieves closest points based on vector similarity and the given filtering conditions, grouped + by a given field.
      +
      +
      Parameters:
      +
      request - The search group request
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      searchGroupsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.PointGroup>> searchGroupsAsync(io.qdrant.client.grpc.Points.SearchPointGroups request, + @Nullable + Duration timeout)
      +
      Retrieves closest points based on vector similarity and the given filtering conditions, grouped + by a given field.
      +
      +
      Parameters:
      +
      request - The search group request
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      scrollAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.ScrollResponse> scrollAsync(io.qdrant.client.grpc.Points.ScrollPoints request)
      +
      Iterates over all or filtered points.
      +
      +
      Parameters:
      +
      request - The scroll request
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      scrollAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.ScrollResponse> scrollAsync(io.qdrant.client.grpc.Points.ScrollPoints request, + @Nullable + Duration timeout)
      +
      Iterates over all or filtered points.
      +
      +
      Parameters:
      +
      request - The scroll request.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      recommendAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>> recommendAsync(io.qdrant.client.grpc.Points.RecommendPoints request)
      +
      Look for the points which are closer to stored positive examples and at the same time further + to negative examples.
      +
      +
      Parameters:
      +
      request - The recommend request
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      recommendAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>> recommendAsync(io.qdrant.client.grpc.Points.RecommendPoints request, + @Nullable + Duration timeout)
      +
      Look for the points which are closer to stored positive examples and at the same time further + to negative examples.
      +
      +
      Parameters:
      +
      request - The recommend request.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      recommendBatchAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>> recommendBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.RecommendPoints> recommendSearches, + @Nullable + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
      +
      Look for the points which are closer to stored positive examples and at the same time further + to negative examples.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      recommendSearches - The list of recommendation searches.
      +
      readConsistency - Options for specifying read consistency guarantees.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      recommendBatchAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>> recommendBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.RecommendPoints> recommendSearches, + @Nullable + io.qdrant.client.grpc.Points.ReadConsistency readConsistency, + @Nullable + Duration timeout)
      +
      Look for the points which are closer to stored positive examples and at the same time further + to negative examples.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      recommendSearches - The list of recommendation searches.
      +
      readConsistency - Options for specifying read consistency guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      batchUpdateAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.UpdateResult>> batchUpdateAsync(String collectionName, + List<io.qdrant.client.grpc.Points.PointsUpdateOperation> operations)
      +
      Performs a batch update of points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      operations - The list of point update operations.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      batchUpdateAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.UpdateResult>> batchUpdateAsync(String collectionName, + List<io.qdrant.client.grpc.Points.PointsUpdateOperation> operations, + @Nullable + Boolean wait, + @Nullable + io.qdrant.client.grpc.Points.WriteOrdering ordering, + @Nullable + Duration timeout)
      +
      Performs a batch update of points.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      operations - The list of point update operations.
      +
      wait - Whether to wait until the changes have been applied. Defaults to true.
      +
      ordering - Write ordering guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      batchUpdateAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.UpdateResult>> batchUpdateAsync(io.qdrant.client.grpc.Points.UpdateBatchPoints request, + @Nullable + Duration timeout)
      +
      Performs a batch update of points.
      +
      +
      Parameters:
      +
      request - The update batch request.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      recommendGroupsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.PointGroup>> recommendGroupsAsync(io.qdrant.client.grpc.Points.RecommendPointGroups request)
      +
      Look for the points which are closer to stored positive examples and at the same time further + to negative examples, grouped by a given field
      +
      +
      Parameters:
      +
      request - The recommend groups request
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      recommendGroupsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.PointGroup>> recommendGroupsAsync(io.qdrant.client.grpc.Points.RecommendPointGroups request, + @Nullable + Duration timeout)
      +
      Look for the points which are closer to stored positive examples and at the same time further + to negative examples, grouped by a given field
      +
      +
      Parameters:
      +
      request - The recommend groups request
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      discoverAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>> discoverAsync(io.qdrant.client.grpc.Points.DiscoverPoints request)
      +
      Use the context and a target to find the most similar points to the target. Constraints by the + context.
      +
      +
      Parameters:
      +
      request - The discover points request
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      discoverAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>> discoverAsync(io.qdrant.client.grpc.Points.DiscoverPoints request, + @Nullable + Duration timeout)
      +
      Use the context and a target to find the most similar points to the target. Constraints by the + context.
      +
      +
      Parameters:
      +
      request - The discover points request
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      discoverBatchAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>> discoverBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.DiscoverPoints> discoverSearches, + @Nullable + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
      +
      Use the context and a target to find the most similar points to the target in a batch. + Constrained by the context.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection
      +
      discoverSearches - The list for discover point searches
      +
      readConsistency - Options for specifying read consistency guarantees
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      discoverBatchAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>> discoverBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.DiscoverPoints> discoverSearches, + @Nullable + io.qdrant.client.grpc.Points.ReadConsistency readConsistency, + @Nullable + Duration timeout)
      +
      Use the context and a target to find the most similar points to the target in a batch. + Constrained by the context.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection
      +
      discoverSearches - The list for discover point searches
      +
      readConsistency - Options for specifying read consistency guarantees
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      countAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<Long> countAsync(String collectionName)
      +
      Count the points in a collection. The count is exact
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      countAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<Long> countAsync(String collectionName, + @Nullable + Duration timeout)
      +
      Count the points in a collection. The count is exact
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      countAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<Long> countAsync(String collectionName, + @Nullable + io.qdrant.client.grpc.Common.Filter filter, + @Nullable + Boolean exact)
      +
      Count the points in a collection with the given filtering conditions.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      filter - Filter conditions - return only those points that satisfy the specified + conditions.
      +
      exact - If true, returns the exact count, if false, returns an + approximate count. Defaults to true.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      countAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<Long> countAsync(String collectionName, + @Nullable + io.qdrant.client.grpc.Common.Filter filter, + @Nullable + Boolean exact, + @Nullable + Duration timeout)
      +
      Count the points in a collection with the given filtering conditions.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      filter - Filter conditions - return only those points that satisfy the specified + conditions.
      +
      exact - If true, returns the exact count, if false, returns an + approximate count. Defaults to true.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      queryAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>> queryAsync(io.qdrant.client.grpc.Points.QueryPoints request)
      +
      Universally query points. Covers all capabilities of search, recommend, discover, filters. Also + enables hybrid and multi-stage queries.
      +
      +
      Parameters:
      +
      request - the query request
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      queryAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.ScoredPoint>> queryAsync(io.qdrant.client.grpc.Points.QueryPoints request, + @Nullable + Duration timeout)
      +
      Universally query points. Covers all capabilities of search, recommend, discover, filters. Also + enables hybrid and multi-stage queries.
      +
      +
      Parameters:
      +
      request - the query request
      +
      timeout - the timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      queryBatchAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>> queryBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.QueryPoints> queries)
      +
      Universally query points in batch. Covers all capabilities of search, recommend, discover, + filters. Also enables hybrid and multi-stage queries.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection
      +
      queries - The queries to be performed in the batch.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      queryBatchAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>> queryBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.QueryPoints> queries, + @Nullable + io.qdrant.client.grpc.Points.ReadConsistency readConsistency)
      +
      Universally query points in batch. Covers all capabilities of search, recommend, discover, + filters. Also enables hybrid and multi-stage queries.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection
      +
      queries - The queries to be performed in the batch.
      +
      readConsistency - Options for specifying read consistency guarantees.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      queryBatchAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.BatchResult>> queryBatchAsync(String collectionName, + List<io.qdrant.client.grpc.Points.QueryPoints> queries, + @Nullable + io.qdrant.client.grpc.Points.ReadConsistency readConsistency, + @Nullable + Duration timeout)
      +
      Universally query points in batch. Covers all capabilities of search, recommend, discover, + filters. Also enables hybrid and multi-stage queries.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection
      +
      queries - The queries to be performed in the batch.
      +
      readConsistency - Options for specifying read consistency guarantees.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      queryGroupsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.PointGroup>> queryGroupsAsync(io.qdrant.client.grpc.Points.QueryPointGroups request)
      +
      Universally query points. Covers all capabilities of search, recommend, discover, filters. + Grouped by a payload field.
      +
      +
      Parameters:
      +
      request - the query request
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      queryGroupsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.PointGroup>> queryGroupsAsync(io.qdrant.client.grpc.Points.QueryPointGroups request, + @Nullable + Duration timeout)
      +
      Universally query points. Covers all capabilities of search, recommend, discover, filters. + Grouped by a payload field.
      +
      +
      Parameters:
      +
      request - the query request
      +
      timeout - the timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      facetAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.FacetHit>> facetAsync(io.qdrant.client.grpc.Points.FacetCounts request)
      +
      Perform facet counts. For each value in the field, count the number of points that have this + value and match the conditions.
      +
      +
      Parameters:
      +
      request - the facet counts request
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      facetAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.Points.FacetHit>> facetAsync(io.qdrant.client.grpc.Points.FacetCounts request, + @Nullable + Duration timeout)
      +
      Perform facet counts. For each value in the field, count the number of points that have this + value and match the conditions.
      +
      +
      Parameters:
      +
      request - the facet counts request
      +
      timeout - the timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      searchMatrixPairsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.SearchMatrixPairs> searchMatrixPairsAsync(io.qdrant.client.grpc.Points.SearchMatrixPoints request)
      +
      Compute distance matrix for sampled points with a pair based output format.
      +
      +
      Parameters:
      +
      request - the search matrix pairs request
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      searchMatrixPairsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.SearchMatrixPairs> searchMatrixPairsAsync(io.qdrant.client.grpc.Points.SearchMatrixPoints request, + @Nullable + Duration timeout)
      +
      Compute distance matrix for sampled points with a pair based output format.
      +
      +
      Parameters:
      +
      request - the search matrix pairs request
      +
      timeout - the timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      searchMatrixOffsetsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.SearchMatrixOffsets> searchMatrixOffsetsAsync(io.qdrant.client.grpc.Points.SearchMatrixPoints request)
      +
      Compute distance matrix for sampled points with an offset based output format
      +
      +
      Parameters:
      +
      request - the search matrix pairs request
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      searchMatrixOffsetsAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.Points.SearchMatrixOffsets> searchMatrixOffsetsAsync(io.qdrant.client.grpc.Points.SearchMatrixPoints request, + @Nullable + Duration timeout)
      +
      Compute distance matrix for sampled points with an offset based output format
      +
      +
      Parameters:
      +
      request - the search matrix pairs request
      +
      timeout - the timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createSnapshotAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription> createSnapshotAsync(String collectionName)
      +
      Create snapshot for a given collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createSnapshotAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription> createSnapshotAsync(String collectionName, + @Nullable + Duration timeout)
      +
      Create snapshot for a given collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      listSnapshotAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription>> listSnapshotAsync(String collectionName)
      +
      Get list of snapshots for a collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      listSnapshotAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription>> listSnapshotAsync(String collectionName, + @Nullable + Duration timeout)
      +
      Get list of snapshots for a collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteSnapshotAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.DeleteSnapshotResponse> deleteSnapshotAsync(String collectionName, + String snapshotName)
      +
      Delete snapshot for a given collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      snapshotName - The name of the snapshot.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteSnapshotAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.DeleteSnapshotResponse> deleteSnapshotAsync(String collectionName, + String snapshotName, + @Nullable + Duration timeout)
      +
      Delete snapshot for a given collection.
      +
      +
      Parameters:
      +
      collectionName - The name of the collection.
      +
      snapshotName - The name of the snapshot.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createFullSnapshotAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription> createFullSnapshotAsync()
      +
      Create snapshot for a whole storage.
      +
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      createFullSnapshotAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription> createFullSnapshotAsync(@Nullable + Duration timeout)
      +
      Create snapshot for a whole storage.
      +
      +
      Parameters:
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      listFullSnapshotAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription>> listFullSnapshotAsync()
      +
      Get list of snapshots for a whole storage.
      +
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      listFullSnapshotAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<List<io.qdrant.client.grpc.SnapshotsService.SnapshotDescription>> listFullSnapshotAsync(@Nullable + Duration timeout)
      +
      Get list of snapshots for a whole storage.
      +
      +
      Parameters:
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteFullSnapshotAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.DeleteSnapshotResponse> deleteFullSnapshotAsync(String snapshotName)
      +
      Delete snapshot for a whole storage.
      +
      +
      Parameters:
      +
      snapshotName - The name of the snapshot.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      deleteFullSnapshotAsync

      +
      public com.google.common.util.concurrent.ListenableFuture<io.qdrant.client.grpc.SnapshotsService.DeleteSnapshotResponse> deleteFullSnapshotAsync(String snapshotName, + @Nullable + Duration timeout)
      +
      Delete snapshot for a whole storage.
      +
      +
      Parameters:
      +
      snapshotName - The name of the snapshot.
      +
      timeout - The timeout for the call.
      +
      Returns:
      +
      a new instance of ListenableFuture
      +
      +
      +
    • +
    • +
      +

      close

      +
      public void close()
      +
      +
      Specified by:
      +
      close in interface AutoCloseable
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/QdrantException.html b/io/qdrant/client/QdrantException.html new file mode 100644 index 00000000..77dfddaf --- /dev/null +++ b/io/qdrant/client/QdrantException.html @@ -0,0 +1,154 @@ + + + + +QdrantException (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class QdrantException

+
+ +
+
+
All Implemented Interfaces:
+
Serializable
+
+
+
public class QdrantException +extends RuntimeException
+
An exception when interacting with qdrant
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      QdrantException

      +
      public QdrantException(String message)
      +
      Instantiates a new instance of QdrantException
      +
      +
      Parameters:
      +
      message - The exception message
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/QdrantGrpcClient.Builder.html b/io/qdrant/client/QdrantGrpcClient.Builder.html new file mode 100644 index 00000000..ce3455d9 --- /dev/null +++ b/io/qdrant/client/QdrantGrpcClient.Builder.html @@ -0,0 +1,220 @@ + + + + +QdrantGrpcClient.Builder (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class QdrantGrpcClient.Builder

+
+
java.lang.Object +
io.qdrant.client.QdrantGrpcClient.Builder
+
+
+
+
Enclosing class:
+
QdrantGrpcClient
+
+
+
public static class QdrantGrpcClient.Builder +extends Object
+
builder for QdrantGrpcClient
+
+
+ +
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      withApiKey

      +
      public QdrantGrpcClient.Builder withApiKey(String apiKey)
      +
      Sets the API key to use for authentication
      +
      +
      Parameters:
      +
      apiKey - The API key to use.
      +
      Returns:
      +
      this
      +
      +
      +
    • +
    • +
      +

      withTimeout

      +
      public QdrantGrpcClient.Builder withTimeout(@Nullable + Duration timeout)
      +
      Sets a default timeout for all requests.
      +
      +
      Parameters:
      +
      timeout - The timeout.
      +
      Returns:
      +
      this
      +
      +
      +
    • +
    • +
      +

      withCallCredentials

      +
      public QdrantGrpcClient.Builder withCallCredentials(@Nullable + io.grpc.CallCredentials callCredentials)
      +
      Sets the credential data that will be propagated to the server via request metadata for each + RPC. + +

      Note: If both withApiKey(String) / withHeaders(Map) and this method are + used, this method takes precedence and the API key and headers will be ignored.

      +
      +
      Parameters:
      +
      callCredentials - The call credentials to use.
      +
      Returns:
      +
      this
      +
      +
      +
    • +
    • +
      +

      withHeaders

      +
      public QdrantGrpcClient.Builder withHeaders(Map<String,String> headers)
      +
      Sets custom headers to send with every gRPC request.
      +
      +
      Parameters:
      +
      headers - The headers to send.
      +
      Returns:
      +
      this
      +
      +
      +
    • +
    • +
      +

      build

      +
      public QdrantGrpcClient build()
      +
      Builds a new instance of QdrantGrpcClient
      +
      +
      Returns:
      +
      a new instance of QdrantGrpcClient
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/QdrantGrpcClient.html b/io/qdrant/client/QdrantGrpcClient.html new file mode 100644 index 00000000..0295bc37 --- /dev/null +++ b/io/qdrant/client/QdrantGrpcClient.html @@ -0,0 +1,394 @@ + + + + +QdrantGrpcClient (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class QdrantGrpcClient

+
+
java.lang.Object +
io.qdrant.client.QdrantGrpcClient
+
+
+
+
All Implemented Interfaces:
+
AutoCloseable
+
+
+
public class QdrantGrpcClient +extends Object +implements AutoCloseable
+
Low-level gRPC client for qdrant vector database.
+
+
+ +
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      newBuilder

      +
      public static QdrantGrpcClient.Builder newBuilder(io.grpc.ManagedChannel channel)
      +
      Creates a new builder to build a client.
      +
      +
      Parameters:
      +
      channel - The channel for communication. This channel is not shutdown by the client and + must be managed by the caller.
      +
      Returns:
      +
      a new instance of QdrantGrpcClient.Builder
      +
      +
      +
    • +
    • +
      +

      newBuilder

      +
      public static QdrantGrpcClient.Builder newBuilder(io.grpc.ManagedChannel channel, + boolean shutdownChannelOnClose)
      +
      Creates a new builder to build a client.
      +
      +
      Parameters:
      +
      channel - The channel for communication.
      +
      shutdownChannelOnClose - Whether the channel is shutdown on client close.
      +
      Returns:
      +
      a new instance of QdrantGrpcClient.Builder
      +
      +
      +
    • +
    • +
      +

      newBuilder

      +
      public static QdrantGrpcClient.Builder newBuilder(io.grpc.ManagedChannel channel, + boolean shutdownChannelOnClose, + boolean checkCompatibility)
      +
      Creates a new builder to build a client.
      +
      +
      Parameters:
      +
      channel - The channel for communication.
      +
      shutdownChannelOnClose - Whether the channel is shutdown on client close.
      +
      checkCompatibility - Whether to check compatibility between client's and server's + versions.
      +
      Returns:
      +
      a new instance of QdrantGrpcClient.Builder
      +
      +
      +
    • +
    • +
      +

      newBuilder

      +
      public static QdrantGrpcClient.Builder newBuilder(String host)
      +
      Creates a new builder to build a client.
      +
      +
      Parameters:
      +
      host - The host to connect to. The default gRPC port 6334 is used.
      +
      Returns:
      +
      a new instance of QdrantGrpcClient.Builder
      +
      +
      +
    • +
    • +
      +

      newBuilder

      +
      public static QdrantGrpcClient.Builder newBuilder(String host, + int port)
      +
      Creates a new builder to build a client. The client uses Transport Layer Security by default.
      +
      +
      Parameters:
      +
      host - The host to connect to.
      +
      port - The port to connect to.
      +
      Returns:
      +
      a new instance of QdrantGrpcClient.Builder
      +
      +
      +
    • +
    • +
      +

      newBuilder

      +
      public static QdrantGrpcClient.Builder newBuilder(String host, + int port, + boolean useTransportLayerSecurity)
      +
      Creates a new builder to build a client.
      +
      +
      Parameters:
      +
      host - The host to connect to.
      +
      port - The port to connect to.
      +
      useTransportLayerSecurity - Whether the client uses Transport Layer Security (TLS) to + secure communications. Running without TLS should only be used for testing purposes.
      +
      Returns:
      +
      a new instance of QdrantGrpcClient.Builder
      +
      +
      +
    • +
    • +
      +

      newBuilder

      +
      public static QdrantGrpcClient.Builder newBuilder(String host, + int port, + boolean useTransportLayerSecurity, + boolean checkCompatibility)
      +
      Creates a new builder to build a client.
      +
      +
      Parameters:
      +
      host - The host to connect to.
      +
      port - The port to connect to.
      +
      useTransportLayerSecurity - Whether the client uses Transport Layer Security (TLS) to + secure communications. Running without TLS should only be used for testing purposes.
      +
      checkCompatibility - Whether to check compatibility between client's and server's + versions.
      +
      Returns:
      +
      a new instance of QdrantGrpcClient.Builder
      +
      +
      +
    • +
    • +
      +

      channel

      +
      public io.grpc.ManagedChannel channel()
      +
      Gets the channel
      +
      +
      Returns:
      +
      the channel
      +
      +
      +
    • +
    • +
      +

      qdrant

      +
      public io.qdrant.client.grpc.QdrantGrpc.QdrantFutureStub qdrant()
      +
      Gets the client for qdrant services
      +
      +
      Returns:
      +
      a new instance of QdrantGrpc.QdrantFutureStub
      +
      +
      +
    • +
    • +
      +

      points

      +
      public io.qdrant.client.grpc.PointsGrpc.PointsFutureStub points()
      +
      Gets the client for points
      +
      +
      Returns:
      +
      a new instance of PointsGrpc.PointsFutureStub
      +
      +
      +
    • +
    • +
      +

      collections

      +
      public io.qdrant.client.grpc.CollectionsGrpc.CollectionsFutureStub collections()
      +
      Gets the client for collections
      +
      +
      Returns:
      +
      a new instance of CollectionsGrpc.CollectionsFutureStub
      +
      +
      +
    • +
    • +
      +

      snapshots

      +
      public io.qdrant.client.grpc.SnapshotsGrpc.SnapshotsFutureStub snapshots()
      +
      Gets the client for snapshots
      +
      +
      Returns:
      +
      a new instance of SnapshotsGrpc.SnapshotsFutureStub
      +
      +
      +
    • +
    • +
      +

      close

      +
      public void close()
      +
      +
      Specified by:
      +
      close in interface AutoCloseable
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/QueryFactory.html b/io/qdrant/client/QueryFactory.html new file mode 100644 index 00000000..279c64e1 --- /dev/null +++ b/io/qdrant/client/QueryFactory.html @@ -0,0 +1,541 @@ + + + + +QueryFactory (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class QueryFactory

+
+
java.lang.Object +
io.qdrant.client.QueryFactory
+
+
+
+
public final class QueryFactory +extends Object
+
Convenience methods for constructing Points.Query
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.Points.Query
    +
    context(io.qdrant.client.grpc.Points.ContextInput input)
    +
    +
    Creates a Points.Query for context search.
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    discover(io.qdrant.client.grpc.Points.DiscoverInput input)
    +
    +
    Creates a Points.Query for discovery.
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    formula(io.qdrant.client.grpc.Points.Formula formula)
    +
    +
    Creates a Points.Query for score boosting using an arbitrary formula.
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    fusion(io.qdrant.client.grpc.Points.Fusion fusion)
    +
    +
    Creates a Points.Query for pre-fetch results fusion.
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    nearest(float... values)
    +
    +
    Creates a Points.Query from a list of floats
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    nearest(float[][] vectors)
    +
    +
    Creates a Points.Query from a nested array of floats representing a multi vector
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    nearest(long id)
    +
    +
    Creates a Points.Query from a long
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    nearest(io.qdrant.client.grpc.Common.PointId id)
    +
    +
    Creates a Points.Query from a Common.PointId
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    nearest(io.qdrant.client.grpc.Points.Document document)
    +
    +
    Creates a Points.Query from a Points.Document
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    nearest(io.qdrant.client.grpc.Points.Image image)
    +
    +
    Creates a Points.Query from an image for cloud inference.
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    nearest(io.qdrant.client.grpc.Points.InferenceObject object)
    +
    +
    Creates a Points.Query from an Points.InferenceObject
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    nearest(io.qdrant.client.grpc.Points.VectorInput input)
    +
    +
    Creates a Points.Query for nearest search.
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    nearest(io.qdrant.client.grpc.Points.VectorInput nearest, + io.qdrant.client.grpc.Points.Mmr mmr)
    +
    +
    Creates a Points.Query for re-ranking points with MMR (Maximum Marginal Relevance).
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    nearest(List<Float> values)
    +
    +
    Creates a Points.Query from a list of floats
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    nearest(List<Float> values, + List<Integer> indices)
    +
    +
    Creates a Points.Query from a list of floats and integers as indices
    +
    +
    static io.qdrant.client.grpc.Points.Query
    + +
    +
    Creates a Points.Query from a UUID
    +
    +
    static io.qdrant.client.grpc.Points.Query
    + +
    +
    Creates a Points.Query from a nested list of floats representing a multi vector
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    orderBy(io.qdrant.client.grpc.Points.OrderBy orderBy)
    +
    +
    Creates a Points.Query to order points by a payload field.
    +
    +
    static io.qdrant.client.grpc.Points.Query
    + +
    +
    Creates a Points.Query to order points by a payload field.
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    recommend(io.qdrant.client.grpc.Points.RecommendInput input)
    +
    +
    Creates a Points.Query for recommendation.
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    relevanceFeedback(io.qdrant.client.grpc.Points.RelevanceFeedbackInput relevanceFeedback)
    +
    +
    Creates a Points.Query for search with feedback from some oracle.
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    rrf(io.qdrant.client.grpc.Points.Rrf rrf)
    +
    +
    Creates a Points.Query for reciprocal rank fusion (RRF).
    +
    +
    static io.qdrant.client.grpc.Points.Query
    +
    sample(io.qdrant.client.grpc.Points.Sample sample)
    +
    +
    Creates a Points.Query for sampling.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      recommend

      +
      public static io.qdrant.client.grpc.Points.Query recommend(io.qdrant.client.grpc.Points.RecommendInput input)
      +
      Creates a Points.Query for recommendation.
      +
      +
      Parameters:
      +
      input - An instance of Points.RecommendInput
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      discover

      +
      public static io.qdrant.client.grpc.Points.Query discover(io.qdrant.client.grpc.Points.DiscoverInput input)
      +
      Creates a Points.Query for discovery.
      +
      +
      Parameters:
      +
      input - An instance of Points.DiscoverInput
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      context

      +
      public static io.qdrant.client.grpc.Points.Query context(io.qdrant.client.grpc.Points.ContextInput input)
      +
      Creates a Points.Query for context search.
      +
      +
      Parameters:
      +
      input - An instance of Points.ContextInput
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      fusion

      +
      public static io.qdrant.client.grpc.Points.Query fusion(io.qdrant.client.grpc.Points.Fusion fusion)
      +
      Creates a Points.Query for pre-fetch results fusion.
      +
      +
      Parameters:
      +
      fusion - An instance of Points.Fusion
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      rrf

      +
      public static io.qdrant.client.grpc.Points.Query rrf(io.qdrant.client.grpc.Points.Rrf rrf)
      +
      Creates a Points.Query for reciprocal rank fusion (RRF).
      +
      +
      Parameters:
      +
      rrf - An instance of Points.Rrf
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      orderBy

      +
      public static io.qdrant.client.grpc.Points.Query orderBy(String key)
      +
      Creates a Points.Query to order points by a payload field.
      +
      +
      Parameters:
      +
      key - Name of the payload field to order by
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      orderBy

      +
      public static io.qdrant.client.grpc.Points.Query orderBy(io.qdrant.client.grpc.Points.OrderBy orderBy)
      +
      Creates a Points.Query to order points by a payload field.
      +
      +
      Parameters:
      +
      orderBy - An instance of Points.OrderBy
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      formula

      +
      public static io.qdrant.client.grpc.Points.Query formula(io.qdrant.client.grpc.Points.Formula formula)
      +
      Creates a Points.Query for score boosting using an arbitrary formula.
      +
      +
      Parameters:
      +
      formula - An instance of Points.Formula
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      nearest

      +
      public static io.qdrant.client.grpc.Points.Query nearest(io.qdrant.client.grpc.Points.VectorInput input)
      +
      Creates a Points.Query for nearest search.
      +
      +
      Parameters:
      +
      input - An instance of Points.VectorInput
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      nearest

      +
      public static io.qdrant.client.grpc.Points.Query nearest(List<Float> values)
      +
      Creates a Points.Query from a list of floats
      +
      +
      Parameters:
      +
      values - A map of vector names to values
      +
      Returns:
      +
      A new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      nearest

      +
      public static io.qdrant.client.grpc.Points.Query nearest(float... values)
      +
      Creates a Points.Query from a list of floats
      +
      +
      Parameters:
      +
      values - A list of values
      +
      Returns:
      +
      A new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      nearest

      +
      public static io.qdrant.client.grpc.Points.Query nearest(List<Float> values, + List<Integer> indices)
      +
      Creates a Points.Query from a list of floats and integers as indices
      +
      +
      Parameters:
      +
      values - The list of floats representing the vector.
      +
      indices - The list of integers representing the indices.
      +
      Returns:
      +
      A new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      nearest

      +
      public static io.qdrant.client.grpc.Points.Query nearest(float[][] vectors)
      +
      Creates a Points.Query from a nested array of floats representing a multi vector
      +
      +
      Parameters:
      +
      vectors - The nested array of floats.
      +
      Returns:
      +
      A new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      nearest

      +
      public static io.qdrant.client.grpc.Points.Query nearest(long id)
      +
      Creates a Points.Query from a long
      +
      +
      Parameters:
      +
      id - The point id
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      nearest

      +
      public static io.qdrant.client.grpc.Points.Query nearest(UUID id)
      +
      Creates a Points.Query from a UUID
      +
      +
      Parameters:
      +
      id - The point id
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      nearest

      +
      public static io.qdrant.client.grpc.Points.Query nearest(io.qdrant.client.grpc.Common.PointId id)
      +
      Creates a Points.Query from a Common.PointId
      +
      +
      Parameters:
      +
      id - The point id
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      nearest

      +
      public static io.qdrant.client.grpc.Points.Query nearest(io.qdrant.client.grpc.Points.Document document)
      +
      Creates a Points.Query from a Points.Document
      +
      +
      Parameters:
      +
      document - The document to vectorize and query against.
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      nearest

      +
      public static io.qdrant.client.grpc.Points.Query nearest(io.qdrant.client.grpc.Points.Image image)
      +
      Creates a Points.Query from an image for cloud inference.
      +
      +
      Parameters:
      +
      image - The image to vectorize and query against.
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      nearest

      +
      public static io.qdrant.client.grpc.Points.Query nearest(io.qdrant.client.grpc.Points.InferenceObject object)
      +
      Creates a Points.Query from an Points.InferenceObject
      +
      +
      Parameters:
      +
      object - The inference object to vectorize and query against.
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      nearest

      +
      public static io.qdrant.client.grpc.Points.Query nearest(io.qdrant.client.grpc.Points.VectorInput nearest, + io.qdrant.client.grpc.Points.Mmr mmr)
      +
      Creates a Points.Query for re-ranking points with MMR (Maximum Marginal Relevance).
      +
      +
      Parameters:
      +
      nearest - The vector input for nearest search.
      +
      mmr - The MMR configuration.
      +
      Returns:
      +
      a new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      nearestMultiVector

      +
      public static io.qdrant.client.grpc.Points.Query nearestMultiVector(List<List<Float>> vectors)
      +
      Creates a Points.Query from a nested list of floats representing a multi vector
      +
      +
      Parameters:
      +
      vectors - The nested list of floats.
      +
      Returns:
      +
      A new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      sample

      +
      public static io.qdrant.client.grpc.Points.Query sample(io.qdrant.client.grpc.Points.Sample sample)
      +
      Creates a Points.Query for sampling.
      +
      +
      Parameters:
      +
      sample - An instance of Points.Sample
      +
      Returns:
      +
      A new instance of Points.Query
      +
      +
      +
    • +
    • +
      +

      relevanceFeedback

      +
      public static io.qdrant.client.grpc.Points.Query relevanceFeedback(io.qdrant.client.grpc.Points.RelevanceFeedbackInput relevanceFeedback)
      +
      Creates a Points.Query for search with feedback from some oracle.
      +
      +
      Parameters:
      +
      relevanceFeedback - An instance of Points.RelevanceFeedbackInput
      +
      Returns:
      +
      A new instance of Points.Query
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/RequestHeaders.html b/io/qdrant/client/RequestHeaders.html new file mode 100644 index 00000000..6474ca7e --- /dev/null +++ b/io/qdrant/client/RequestHeaders.html @@ -0,0 +1,175 @@ + + + + +RequestHeaders (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class RequestHeaders

+
+
java.lang.Object +
io.qdrant.client.RequestHeaders
+
+
+
+
public final class RequestHeaders +extends Object
+
Utilities for attaching per-request headers to gRPC calls. + +

+ Context ctx = RequestHeaders.withHeader(Context.current(), "x-request-id", "abc-123");
+ ctx.run(() -> client.listCollectionsAsync());
+ 
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.grpc.Context
    +
    withHeader(io.grpc.Context ctx, + String key, + String value)
    +
    +
    Returns a new Context that carries key/value as a gRPC metadata header on every request + started within that context.
    +
    +
    static io.grpc.Context
    +
    withHeaders(io.grpc.Context ctx, + Map<String,String> headers)
    +
    +
    Returns a new Context that carries all entries of headers as gRPC metadata on every + request started within that context.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      withHeader

      +
      public static io.grpc.Context withHeader(io.grpc.Context ctx, + String key, + String value)
      +
      Returns a new Context that carries key/value as a gRPC metadata header on every request + started within that context.
      +
      +
      Parameters:
      +
      ctx - the parent context
      +
      key - the header name
      +
      value - the header value
      +
      Returns:
      +
      a child context with the header attached
      +
      +
      +
    • +
    • +
      +

      withHeaders

      +
      public static io.grpc.Context withHeaders(io.grpc.Context ctx, + Map<String,String> headers)
      +
      Returns a new Context that carries all entries of headers as gRPC metadata on every + request started within that context.
      +
      +
      Parameters:
      +
      ctx - the parent context
      +
      headers - the headers to attach
      +
      Returns:
      +
      a child context with the headers attached
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/ShardKeyFactory.html b/io/qdrant/client/ShardKeyFactory.html new file mode 100644 index 00000000..43106b33 --- /dev/null +++ b/io/qdrant/client/ShardKeyFactory.html @@ -0,0 +1,157 @@ + + + + +ShardKeyFactory (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ShardKeyFactory

+
+
java.lang.Object +
io.qdrant.client.ShardKeyFactory
+
+
+
+
public final class ShardKeyFactory +extends Object
+
Convenience methods for constructing Collections.ShardKey
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.Collections.ShardKey
    +
    shardKey(long number)
    +
    +
    Creates a Collections.ShardKey based on a number.
    +
    +
    static io.qdrant.client.grpc.Collections.ShardKey
    +
    shardKey(String keyword)
    +
    +
    Creates a Collections.ShardKey based on a keyword.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      shardKey

      +
      public static io.qdrant.client.grpc.Collections.ShardKey shardKey(String keyword)
      +
      Creates a Collections.ShardKey based on a keyword.
      +
      +
      Parameters:
      +
      keyword - The keyword to create the shard key from
      +
      Returns:
      +
      The Collections.ShardKey object
      +
      +
      +
    • +
    • +
      +

      shardKey

      +
      public static io.qdrant.client.grpc.Collections.ShardKey shardKey(long number)
      +
      Creates a Collections.ShardKey based on a number.
      +
      +
      Parameters:
      +
      number - The number to create the shard key from
      +
      Returns:
      +
      The Collections.ShardKey object
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/ShardKeySelectorFactory.html b/io/qdrant/client/ShardKeySelectorFactory.html new file mode 100644 index 00000000..5c79eb92 --- /dev/null +++ b/io/qdrant/client/ShardKeySelectorFactory.html @@ -0,0 +1,175 @@ + + + + +ShardKeySelectorFactory (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ShardKeySelectorFactory

+
+
java.lang.Object +
io.qdrant.client.ShardKeySelectorFactory
+
+
+
+
public class ShardKeySelectorFactory +extends Object
+
Convenience methods for constructing Points.ShardKeySelector
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.Points.ShardKeySelector
    +
    shardKeySelector(long... numbers)
    +
    +
    Creates a Points.ShardKeySelector with the given shard key numbers.
    +
    +
    static io.qdrant.client.grpc.Points.ShardKeySelector
    +
    shardKeySelector(io.qdrant.client.grpc.Collections.ShardKey... shardKeys)
    +
    +
    Creates a Points.ShardKeySelector with the given shard keys.
    +
    +
    static io.qdrant.client.grpc.Points.ShardKeySelector
    +
    shardKeySelector(String... keywords)
    +
    +
    Creates a Points.ShardKeySelector with the given shard key keywords.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      shardKeySelector

      +
      public static io.qdrant.client.grpc.Points.ShardKeySelector shardKeySelector(io.qdrant.client.grpc.Collections.ShardKey... shardKeys)
      +
      Creates a Points.ShardKeySelector with the given shard keys.
      +
      +
      Parameters:
      +
      shardKeys - The shard keys to include in the selector.
      +
      Returns:
      +
      The created Points.ShardKeySelector object.
      +
      +
      +
    • +
    • +
      +

      shardKeySelector

      +
      public static io.qdrant.client.grpc.Points.ShardKeySelector shardKeySelector(String... keywords)
      +
      Creates a Points.ShardKeySelector with the given shard key keywords.
      +
      +
      Parameters:
      +
      keywords - The shard key keywords to include in the selector.
      +
      Returns:
      +
      The created Points.ShardKeySelector object.
      +
      +
      +
    • +
    • +
      +

      shardKeySelector

      +
      public static io.qdrant.client.grpc.Points.ShardKeySelector shardKeySelector(long... numbers)
      +
      Creates a Points.ShardKeySelector with the given shard key numbers.
      +
      +
      Parameters:
      +
      numbers - The shard key numbers to include in the selector.
      +
      Returns:
      +
      The created Points.ShardKeySelector object.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/StartFromFactory.html b/io/qdrant/client/StartFromFactory.html new file mode 100644 index 00000000..fefdc6a4 --- /dev/null +++ b/io/qdrant/client/StartFromFactory.html @@ -0,0 +1,211 @@ + + + + +StartFromFactory (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class StartFromFactory

+
+
java.lang.Object +
io.qdrant.client.StartFromFactory
+
+
+
+
public final class StartFromFactory +extends Object
+
Convenience methods for constructing Points.StartFrom
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.Points.StartFrom
    +
    startFrom(float value)
    +
    +
    Creates a Points.StartFrom value from a float
    +
    +
    static io.qdrant.client.grpc.Points.StartFrom
    +
    startFrom(int value)
    +
    +
    Creates a Points.StartFrom value from a int
    +
    +
    static io.qdrant.client.grpc.Points.StartFrom
    +
    startFrom(com.google.protobuf.Timestamp value)
    +
    +
    Creates a Points.StartFrom value from a Timestamp
    +
    +
    static io.qdrant.client.grpc.Points.StartFrom
    + +
    +
    Creates a Points.StartFrom value from a String timestamp
    +
    +
    static io.qdrant.client.grpc.Points.StartFrom
    + +
    +
    Creates a Points.StartFrom value from a Timestamp
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      startFrom

      +
      public static io.qdrant.client.grpc.Points.StartFrom startFrom(float value)
      +
      Creates a Points.StartFrom value from a float
      +
      +
      Parameters:
      +
      value - The value
      +
      Returns:
      +
      a new instance of Points.StartFrom
      +
      +
      +
    • +
    • +
      +

      startFrom

      +
      public static io.qdrant.client.grpc.Points.StartFrom startFrom(int value)
      +
      Creates a Points.StartFrom value from a int
      +
      +
      Parameters:
      +
      value - The value
      +
      Returns:
      +
      a new instance of Points.StartFrom
      +
      +
      +
    • +
    • +
      +

      startFrom

      +
      public static io.qdrant.client.grpc.Points.StartFrom startFrom(String value)
      +
      Creates a Points.StartFrom value from a String timestamp
      +
      +
      Parameters:
      +
      value - The value
      +
      Returns:
      +
      a new instance of Points.StartFrom
      +
      +
      +
    • +
    • +
      +

      startFrom

      +
      public static io.qdrant.client.grpc.Points.StartFrom startFrom(com.google.protobuf.Timestamp value)
      +
      Creates a Points.StartFrom value from a Timestamp
      +
      +
      Parameters:
      +
      value - The value
      +
      Returns:
      +
      a new instance of Points.StartFrom
      +
      +
      +
    • +
    • +
      +

      startFrom

      +
      public static io.qdrant.client.grpc.Points.StartFrom startFrom(Instant value)
      +
      Creates a Points.StartFrom value from a Timestamp
      +
      +
      Parameters:
      +
      value - The value
      +
      Returns:
      +
      a new instance of Points.StartFrom
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/TargetVectorFactory.html b/io/qdrant/client/TargetVectorFactory.html new file mode 100644 index 00000000..c3fff976 --- /dev/null +++ b/io/qdrant/client/TargetVectorFactory.html @@ -0,0 +1,157 @@ + + + + +TargetVectorFactory (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class TargetVectorFactory

+
+
java.lang.Object +
io.qdrant.client.TargetVectorFactory
+
+
+
+
public class TargetVectorFactory +extends Object
+
Convenience methods for constructing Points.TargetVector
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.Points.TargetVector
    +
    targetVector(io.qdrant.client.grpc.Common.PointId id)
    +
    +
    Creates a TargetVector from a point ID
    +
    +
    static io.qdrant.client.grpc.Points.TargetVector
    +
    targetVector(io.qdrant.client.grpc.Points.Vector vector)
    +
    +
    Creates a TargetVector from a Vector
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      targetVector

      +
      public static io.qdrant.client.grpc.Points.TargetVector targetVector(io.qdrant.client.grpc.Common.PointId id)
      +
      Creates a TargetVector from a point ID
      +
      +
      Parameters:
      +
      id - The point ID to use
      +
      Returns:
      +
      A new instance of Points.TargetVector
      +
      +
      +
    • +
    • +
      +

      targetVector

      +
      public static io.qdrant.client.grpc.Points.TargetVector targetVector(io.qdrant.client.grpc.Points.Vector vector)
      +
      Creates a TargetVector from a Vector
      +
      +
      Parameters:
      +
      vector - The Vector value to use
      +
      Returns:
      +
      A new instance of Points.TargetVector
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/ValueFactory.html b/io/qdrant/client/ValueFactory.html new file mode 100644 index 00000000..4d589cee --- /dev/null +++ b/io/qdrant/client/ValueFactory.html @@ -0,0 +1,263 @@ + + + + +ValueFactory (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ValueFactory

+
+
java.lang.Object +
io.qdrant.client.ValueFactory
+
+
+
+
public final class ValueFactory +extends Object
+
Convenience methods for constructing JsonWithInt.Value
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.JsonWithInt.Value
    +
    list(List<io.qdrant.client.grpc.JsonWithInt.Value> values)
    +
    +
    Creates a value from a list of values
    +
    +
    static io.qdrant.client.grpc.JsonWithInt.Value
    + +
    +
    Creates a null value
    +
    +
    static io.qdrant.client.grpc.JsonWithInt.Value
    +
    value(boolean value)
    +
    +
    Creates a value from a boolean
    +
    +
    static io.qdrant.client.grpc.JsonWithInt.Value
    +
    value(double value)
    +
    +
    Creates a value from a double
    +
    +
    static io.qdrant.client.grpc.JsonWithInt.Value
    +
    value(long value)
    +
    +
    Creates a value from a long
    +
    +
    static io.qdrant.client.grpc.JsonWithInt.Value
    +
    value(String value)
    +
    +
    Creates a value from a String
    +
    +
    static io.qdrant.client.grpc.JsonWithInt.Value
    +
    value(List<io.qdrant.client.grpc.JsonWithInt.Value> values)
    +
    +
    Creates a value from a list of values.
    +
    +
    static io.qdrant.client.grpc.JsonWithInt.Value
    +
    value(Map<String,io.qdrant.client.grpc.JsonWithInt.Value> values)
    +
    +
    Creates a value from a map of nested values
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      value

      +
      public static io.qdrant.client.grpc.JsonWithInt.Value value(String value)
      +
      Creates a value from a String
      +
      +
      Parameters:
      +
      value - The value
      +
      Returns:
      +
      a new instance of JsonWithInt.Value
      +
      +
      +
    • +
    • +
      +

      value

      +
      public static io.qdrant.client.grpc.JsonWithInt.Value value(long value)
      +
      Creates a value from a long
      +
      +
      Parameters:
      +
      value - The value
      +
      Returns:
      +
      a new instance of JsonWithInt.Value
      +
      +
      +
    • +
    • +
      +

      value

      +
      public static io.qdrant.client.grpc.JsonWithInt.Value value(double value)
      +
      Creates a value from a double
      +
      +
      Parameters:
      +
      value - The value
      +
      Returns:
      +
      a new instance of JsonWithInt.Value
      +
      +
      +
    • +
    • +
      +

      value

      +
      public static io.qdrant.client.grpc.JsonWithInt.Value value(boolean value)
      +
      Creates a value from a boolean
      +
      +
      Parameters:
      +
      value - The value
      +
      Returns:
      +
      a new instance of JsonWithInt.Value
      +
      +
      +
    • +
    • +
      +

      nullValue

      +
      public static io.qdrant.client.grpc.JsonWithInt.Value nullValue()
      +
      Creates a null value
      +
      +
      Returns:
      +
      a new instance of JsonWithInt.Value
      +
      +
      +
    • +
    • +
      +

      list

      +
      public static io.qdrant.client.grpc.JsonWithInt.Value list(List<io.qdrant.client.grpc.JsonWithInt.Value> values)
      +
      Creates a value from a list of values
      +
      +
      Parameters:
      +
      values - The list of values
      +
      Returns:
      +
      a new instance of JsonWithInt.Value
      +
      +
      +
    • +
    • +
      +

      value

      +
      public static io.qdrant.client.grpc.JsonWithInt.Value value(List<io.qdrant.client.grpc.JsonWithInt.Value> values)
      +
      Creates a value from a list of values. Same as list(List)
      +
      +
      Parameters:
      +
      values - The list of values
      +
      Returns:
      +
      a new instance of JsonWithInt.Value
      +
      +
      +
    • +
    • +
      +

      value

      +
      public static io.qdrant.client.grpc.JsonWithInt.Value value(Map<String,io.qdrant.client.grpc.JsonWithInt.Value> values)
      +
      Creates a value from a map of nested values
      +
      +
      Parameters:
      +
      values - The map of values
      +
      Returns:
      +
      a new instance of JsonWithInt.Value
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/VectorFactory.html b/io/qdrant/client/VectorFactory.html new file mode 100644 index 00000000..92d44101 --- /dev/null +++ b/io/qdrant/client/VectorFactory.html @@ -0,0 +1,268 @@ + + + + +VectorFactory (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class VectorFactory

+
+
java.lang.Object +
io.qdrant.client.VectorFactory
+
+
+
+
public final class VectorFactory +extends Object
+
Convenience methods for constructing Points.Vector
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.Points.Vector
    +
    multiVector(float[][] vectors)
    +
    +
    Creates a multi vector from a nested array of floats
    +
    +
    static io.qdrant.client.grpc.Points.Vector
    + +
    +
    Creates a multi vector from a nested list of floats
    +
    +
    static io.qdrant.client.grpc.Points.Vector
    +
    vector(float... values)
    +
    +
    Creates a vector from a list of floats
    +
    +
    static io.qdrant.client.grpc.Points.Vector
    +
    vector(io.qdrant.client.grpc.Points.Document document)
    +
    +
    Creates a vector from a document for cloud inference.
    +
    +
    static io.qdrant.client.grpc.Points.Vector
    +
    vector(io.qdrant.client.grpc.Points.Image image)
    +
    +
    Creates a vector from an image for cloud inference.
    +
    +
    static io.qdrant.client.grpc.Points.Vector
    +
    vector(io.qdrant.client.grpc.Points.InferenceObject object)
    +
    +
    Creates a vector from an inference object.
    +
    +
    static io.qdrant.client.grpc.Points.Vector
    +
    vector(List<Float> values)
    +
    +
    Creates a vector from a list of floats
    +
    +
    static io.qdrant.client.grpc.Points.Vector
    +
    vector(List<Float> vector, + List<Integer> indices)
    +
    +
    Creates a sparse vector from a list of floats and integers as indices
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      vector

      +
      public static io.qdrant.client.grpc.Points.Vector vector(List<Float> values)
      +
      Creates a vector from a list of floats
      +
      +
      Parameters:
      +
      values - A map of vector names to values
      +
      Returns:
      +
      A new instance of Points.Vector
      +
      +
      +
    • +
    • +
      +

      vector

      +
      public static io.qdrant.client.grpc.Points.Vector vector(float... values)
      +
      Creates a vector from a list of floats
      +
      +
      Parameters:
      +
      values - A list of values
      +
      Returns:
      +
      A new instance of Points.Vector
      +
      +
      +
    • +
    • +
      +

      vector

      +
      public static io.qdrant.client.grpc.Points.Vector vector(List<Float> vector, + List<Integer> indices)
      +
      Creates a sparse vector from a list of floats and integers as indices
      +
      +
      Parameters:
      +
      vector - The list of floats representing the vector.
      +
      indices - The list of integers representing the indices.
      +
      Returns:
      +
      A new instance of Points.Vector
      +
      +
      +
    • +
    • +
      +

      vector

      +
      public static io.qdrant.client.grpc.Points.Vector vector(io.qdrant.client.grpc.Points.Document document)
      +
      Creates a vector from a document for cloud inference.
      +
      +
      Parameters:
      +
      document - The document to vectorize.
      +
      Returns:
      +
      A new instance of Points.Vector
      +
      +
      +
    • +
    • +
      +

      vector

      +
      public static io.qdrant.client.grpc.Points.Vector vector(io.qdrant.client.grpc.Points.Image image)
      +
      Creates a vector from an image for cloud inference.
      +
      +
      Parameters:
      +
      image - The image to vectorize.
      +
      Returns:
      +
      A new instance of Points.Vector
      +
      +
      +
    • +
    • +
      +

      vector

      +
      public static io.qdrant.client.grpc.Points.Vector vector(io.qdrant.client.grpc.Points.InferenceObject object)
      +
      Creates a vector from an inference object.
      +
      +
      Parameters:
      +
      object - The inference object to vectorize.
      +
      Returns:
      +
      A new instance of Points.Vector
      +
      +
      +
    • +
    • +
      +

      multiVector

      +
      public static io.qdrant.client.grpc.Points.Vector multiVector(List<List<Float>> vectors)
      +
      Creates a multi vector from a nested list of floats
      +
      +
      Parameters:
      +
      vectors - The nested list of floats representing the multi vector.
      +
      Returns:
      +
      A new instance of Points.Vector
      +
      +
      +
    • +
    • +
      +

      multiVector

      +
      public static io.qdrant.client.grpc.Points.Vector multiVector(float[][] vectors)
      +
      Creates a multi vector from a nested array of floats
      +
      +
      Parameters:
      +
      vectors - The nested array of floats representing the multi vector.
      +
      Returns:
      +
      A new instance of Points.Vector
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/VectorInputFactory.html b/io/qdrant/client/VectorInputFactory.html new file mode 100644 index 00000000..3e0d1c26 --- /dev/null +++ b/io/qdrant/client/VectorInputFactory.html @@ -0,0 +1,322 @@ + + + + +VectorInputFactory (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class VectorInputFactory

+
+
java.lang.Object +
io.qdrant.client.VectorInputFactory
+
+
+
+
public final class VectorInputFactory +extends Object
+
Convenience methods for constructing Points.VectorInput
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.Points.VectorInput
    +
    multiVectorInput(float[][] vectors)
    +
    +
    Creates a Points.VectorInput from a nested array of floats representing a multi vector
    +
    +
    static io.qdrant.client.grpc.Points.VectorInput
    + +
    +
    Creates a Points.VectorInput from a nested list of floats representing a multi vector
    +
    +
    static io.qdrant.client.grpc.Points.VectorInput
    +
    vectorInput(float... values)
    +
    +
    Creates a Points.VectorInput from a list of floats
    +
    +
    static io.qdrant.client.grpc.Points.VectorInput
    +
    vectorInput(long id)
    +
    +
    Creates a Points.VectorInput from a long
    +
    +
    static io.qdrant.client.grpc.Points.VectorInput
    +
    vectorInput(io.qdrant.client.grpc.Common.PointId id)
    +
    +
    Creates a Points.VectorInput from a Common.PointId
    +
    +
    static io.qdrant.client.grpc.Points.VectorInput
    +
    vectorInput(io.qdrant.client.grpc.Points.Document document)
    +
    +
    Creates a Points.VectorInput from a Points.Document
    +
    +
    static io.qdrant.client.grpc.Points.VectorInput
    +
    vectorInput(io.qdrant.client.grpc.Points.Image image)
    +
    +
    Creates a Points.VectorInput from a an Points.Image
    +
    +
    static io.qdrant.client.grpc.Points.VectorInput
    +
    vectorInput(io.qdrant.client.grpc.Points.InferenceObject object)
    +
    +
    Creates a Points.VectorInput from a Points.InferenceObject
    +
    +
    static io.qdrant.client.grpc.Points.VectorInput
    + +
    +
    Creates a Points.VectorInput from a list of floats
    +
    +
    static io.qdrant.client.grpc.Points.VectorInput
    +
    vectorInput(List<Float> vector, + List<Integer> indices)
    +
    +
    Creates a Points.VectorInput from a list of floats and integers as indices
    +
    +
    static io.qdrant.client.grpc.Points.VectorInput
    + +
    +
    Creates a Points.VectorInput from a UUID
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      vectorInput

      +
      public static io.qdrant.client.grpc.Points.VectorInput vectorInput(List<Float> values)
      +
      Creates a Points.VectorInput from a list of floats
      +
      +
      Parameters:
      +
      values - A map of vector names to values
      +
      Returns:
      +
      A new instance of Points.VectorInput
      +
      +
      +
    • +
    • +
      +

      vectorInput

      +
      public static io.qdrant.client.grpc.Points.VectorInput vectorInput(float... values)
      +
      Creates a Points.VectorInput from a list of floats
      +
      +
      Parameters:
      +
      values - A list of values
      +
      Returns:
      +
      A new instance of Points.VectorInput
      +
      +
      +
    • +
    • +
      +

      vectorInput

      +
      public static io.qdrant.client.grpc.Points.VectorInput vectorInput(List<Float> vector, + List<Integer> indices)
      +
      Creates a Points.VectorInput from a list of floats and integers as indices
      +
      +
      Parameters:
      +
      vector - The list of floats representing the vector.
      +
      indices - The list of integers representing the indices.
      +
      Returns:
      +
      A new instance of Points.VectorInput
      +
      +
      +
    • +
    • +
      +

      multiVectorInput

      +
      public static io.qdrant.client.grpc.Points.VectorInput multiVectorInput(List<List<Float>> vectors)
      +
      Creates a Points.VectorInput from a nested list of floats representing a multi vector
      +
      +
      Parameters:
      +
      vectors - The nested list of floats.
      +
      Returns:
      +
      A new instance of Points.VectorInput
      +
      +
      +
    • +
    • +
      +

      multiVectorInput

      +
      public static io.qdrant.client.grpc.Points.VectorInput multiVectorInput(float[][] vectors)
      +
      Creates a Points.VectorInput from a nested array of floats representing a multi vector
      +
      +
      Parameters:
      +
      vectors - The nested array of floats.
      +
      Returns:
      +
      A new instance of Points.VectorInput
      +
      +
      +
    • +
    • +
      +

      vectorInput

      +
      public static io.qdrant.client.grpc.Points.VectorInput vectorInput(long id)
      +
      Creates a Points.VectorInput from a long
      +
      +
      Parameters:
      +
      id - The point id
      +
      Returns:
      +
      a new instance of Points.VectorInput
      +
      +
      +
    • +
    • +
      +

      vectorInput

      +
      public static io.qdrant.client.grpc.Points.VectorInput vectorInput(UUID id)
      +
      Creates a Points.VectorInput from a UUID
      +
      +
      Parameters:
      +
      id - The point id
      +
      Returns:
      +
      a new instance of Points.VectorInput
      +
      +
      +
    • +
    • +
      +

      vectorInput

      +
      public static io.qdrant.client.grpc.Points.VectorInput vectorInput(io.qdrant.client.grpc.Common.PointId id)
      +
      Creates a Points.VectorInput from a Common.PointId
      +
      +
      Parameters:
      +
      id - The point id
      +
      Returns:
      +
      a new instance of Points.VectorInput
      +
      +
      +
    • +
    • +
      +

      vectorInput

      +
      public static io.qdrant.client.grpc.Points.VectorInput vectorInput(io.qdrant.client.grpc.Points.Document document)
      +
      Creates a Points.VectorInput from a Points.Document
      +
      +
      Parameters:
      +
      document - An instance of Points.Document
      +
      Returns:
      +
      a new instance of Points.VectorInput
      +
      +
      +
    • +
    • +
      +

      vectorInput

      +
      public static io.qdrant.client.grpc.Points.VectorInput vectorInput(io.qdrant.client.grpc.Points.Image image)
      +
      Creates a Points.VectorInput from a an Points.Image
      +
      +
      Parameters:
      +
      image - An instance of Points.Image
      +
      Returns:
      +
      a new instance of Points.VectorInput
      +
      +
      +
    • +
    • +
      +

      vectorInput

      +
      public static io.qdrant.client.grpc.Points.VectorInput vectorInput(io.qdrant.client.grpc.Points.InferenceObject object)
      +
      Creates a Points.VectorInput from a Points.InferenceObject
      +
      +
      Parameters:
      +
      object - An instance of Points.InferenceObject
      +
      Returns:
      +
      a new instance of Points.VectorInput
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/VectorOutputHelper.html b/io/qdrant/client/VectorOutputHelper.html new file mode 100644 index 00000000..07d9b1cb --- /dev/null +++ b/io/qdrant/client/VectorOutputHelper.html @@ -0,0 +1,175 @@ + + + + +VectorOutputHelper (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class VectorOutputHelper

+
+
java.lang.Object +
io.qdrant.client.VectorOutputHelper
+
+
+
+
public final class VectorOutputHelper +extends Object
+
Helper methods for extracting vector data from Points.VectorOutput.
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.Points.DenseVector
    +
    getDenseVector(io.qdrant.client.grpc.Points.VectorOutput vectorOutput)
    +
    +
    Returns the DenseVector from the VectorOutput.
    +
    +
    static io.qdrant.client.grpc.Points.MultiDenseVector
    +
    getMultiVector(io.qdrant.client.grpc.Points.VectorOutput vectorOutput)
    +
    +
    Returns the MultiDenseVector from the VectorOutput.
    +
    +
    static io.qdrant.client.grpc.Points.SparseVector
    +
    getSparseVector(io.qdrant.client.grpc.Points.VectorOutput vectorOutput)
    +
    +
    Returns the SparseVector from the VectorOutput.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getDenseVector

      +
      public static io.qdrant.client.grpc.Points.DenseVector getDenseVector(io.qdrant.client.grpc.Points.VectorOutput vectorOutput)
      +
      Returns the DenseVector from the VectorOutput.
      +
      +
      Parameters:
      +
      vectorOutput - the VectorOutput to extract from
      +
      Returns:
      +
      the DenseVector if available, null otherwise
      +
      +
      +
    • +
    • +
      +

      getSparseVector

      +
      public static io.qdrant.client.grpc.Points.SparseVector getSparseVector(io.qdrant.client.grpc.Points.VectorOutput vectorOutput)
      +
      Returns the SparseVector from the VectorOutput.
      +
      +
      Parameters:
      +
      vectorOutput - the VectorOutput to extract from
      +
      Returns:
      +
      the SparseVector if available, null otherwise
      +
      +
      +
    • +
    • +
      +

      getMultiVector

      +
      public static io.qdrant.client.grpc.Points.MultiDenseVector getMultiVector(io.qdrant.client.grpc.Points.VectorOutput vectorOutput)
      +
      Returns the MultiDenseVector from the VectorOutput.
      +
      +
      Parameters:
      +
      vectorOutput - the VectorOutput to extract from
      +
      Returns:
      +
      the MultiDenseVector if available, null otherwise
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/VectorsFactory.html b/io/qdrant/client/VectorsFactory.html new file mode 100644 index 00000000..c50e3527 --- /dev/null +++ b/io/qdrant/client/VectorsFactory.html @@ -0,0 +1,247 @@ + + + + +VectorsFactory (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class VectorsFactory

+
+
java.lang.Object +
io.qdrant.client.VectorsFactory
+
+
+
+
public final class VectorsFactory +extends Object
+
Convenience methods for constructing Points.Vectors
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.Points.Vectors
    +
    namedVectors(Map<String,io.qdrant.client.grpc.Points.Vector> values)
    +
    +
    Creates named vectors
    +
    +
    static io.qdrant.client.grpc.Points.Vectors
    +
    vectors(float... values)
    +
    +
    Creates a vector
    +
    +
    static io.qdrant.client.grpc.Points.Vectors
    +
    vectors(io.qdrant.client.grpc.Points.Document document)
    +
    +
    Creates an instance of Points.Vectors from a document for cloud inference.
    +
    +
    static io.qdrant.client.grpc.Points.Vectors
    +
    vectors(io.qdrant.client.grpc.Points.Image image)
    +
    +
    Creates an instance of Points.Vectors from an image for cloud inference.
    +
    +
    static io.qdrant.client.grpc.Points.Vectors
    +
    vectors(io.qdrant.client.grpc.Points.InferenceObject object)
    +
    +
    Creates an instance of Points.Vectors from an inference object.
    +
    +
    static io.qdrant.client.grpc.Points.Vectors
    +
    vectors(io.qdrant.client.grpc.Points.Vector vector)
    +
    +
    Creates a vector
    +
    +
    static io.qdrant.client.grpc.Points.Vectors
    +
    vectors(List<Float> values)
    +
    +
    Creates a vector
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      namedVectors

      +
      public static io.qdrant.client.grpc.Points.Vectors namedVectors(Map<String,io.qdrant.client.grpc.Points.Vector> values)
      +
      Creates named vectors
      +
      +
      Parameters:
      +
      values - A map of vector names to Points.Vector
      +
      Returns:
      +
      a new instance of Points.Vectors
      +
      +
      +
    • +
    • +
      +

      vectors

      +
      public static io.qdrant.client.grpc.Points.Vectors vectors(List<Float> values)
      +
      Creates a vector
      +
      +
      Parameters:
      +
      values - A list of values
      +
      Returns:
      +
      a new instance of Points.Vectors
      +
      +
      +
    • +
    • +
      +

      vectors

      +
      public static io.qdrant.client.grpc.Points.Vectors vectors(float... values)
      +
      Creates a vector
      +
      +
      Parameters:
      +
      values - A list of values
      +
      Returns:
      +
      a new instance of Points.Vectors
      +
      +
      +
    • +
    • +
      +

      vectors

      +
      public static io.qdrant.client.grpc.Points.Vectors vectors(io.qdrant.client.grpc.Points.Vector vector)
      +
      Creates a vector
      +
      +
      Parameters:
      +
      vector - An instance of Points.Vector
      +
      Returns:
      +
      a new instance of Points.Vectors
      +
      +
      +
    • +
    • +
      +

      vectors

      +
      public static io.qdrant.client.grpc.Points.Vectors vectors(io.qdrant.client.grpc.Points.Document document)
      +
      Creates an instance of Points.Vectors from a document for cloud inference.
      +
      +
      Parameters:
      +
      document - An instance of Points.Document
      +
      Returns:
      +
      a new instance of Points.Vectors
      +
      +
      +
    • +
    • +
      +

      vectors

      +
      public static io.qdrant.client.grpc.Points.Vectors vectors(io.qdrant.client.grpc.Points.Image image)
      +
      Creates an instance of Points.Vectors from an image for cloud inference.
      +
      +
      Parameters:
      +
      image - An instance of Points.Image
      +
      Returns:
      +
      a new instance of Points.Vectors
      +
      +
      +
    • +
    • +
      +

      vectors

      +
      public static io.qdrant.client.grpc.Points.Vectors vectors(io.qdrant.client.grpc.Points.InferenceObject object)
      +
      Creates an instance of Points.Vectors from an inference object.
      +
      +
      Parameters:
      +
      object - The inference object to vectorize.
      +
      Returns:
      +
      A new instance of Points.Vectors
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/VersionsCompatibilityChecker.html b/io/qdrant/client/VersionsCompatibilityChecker.html new file mode 100644 index 00000000..1bb1a763 --- /dev/null +++ b/io/qdrant/client/VersionsCompatibilityChecker.html @@ -0,0 +1,172 @@ + + + + +VersionsCompatibilityChecker (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class VersionsCompatibilityChecker

+
+
java.lang.Object +
io.qdrant.client.VersionsCompatibilityChecker
+
+
+
+
public class VersionsCompatibilityChecker +extends Object
+
Utility class to check compatibility between server's and client's versions.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      VersionsCompatibilityChecker

      +
      public VersionsCompatibilityChecker()
      +
      Default constructor.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      isCompatible

      +
      public static boolean isCompatible(String clientVersion, + String serverVersion)
      +
      Compares server's and client's versions.
      +
      +
      Parameters:
      +
      clientVersion - The client's version.
      +
      serverVersion - The server's version.
      +
      Returns:
      +
      True if the versions are compatible, false otherwise.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/WithPayloadSelectorFactory.html b/io/qdrant/client/WithPayloadSelectorFactory.html new file mode 100644 index 00000000..7f707a99 --- /dev/null +++ b/io/qdrant/client/WithPayloadSelectorFactory.html @@ -0,0 +1,175 @@ + + + + +WithPayloadSelectorFactory (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class WithPayloadSelectorFactory

+
+
java.lang.Object +
io.qdrant.client.WithPayloadSelectorFactory
+
+
+
+
public final class WithPayloadSelectorFactory +extends Object
+
Convenience methods for constructing Points.WithPayloadSelector
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.Points.WithPayloadSelector
    +
    enable(boolean enable)
    +
    +
    Whether to include all payload in response.
    +
    +
    static io.qdrant.client.grpc.Points.WithPayloadSelector
    +
    exclude(List<String> fields)
    +
    +
    Which payload fields to exclude in response.
    +
    +
    static io.qdrant.client.grpc.Points.WithPayloadSelector
    +
    include(List<String> fields)
    +
    +
    Which payload fields to include in response.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      enable

      +
      public static io.qdrant.client.grpc.Points.WithPayloadSelector enable(boolean enable)
      +
      Whether to include all payload in response.
      +
      +
      Parameters:
      +
      enable - if true, to include all payload, if false, none.
      +
      Returns:
      +
      a new instance of Points.WithPayloadSelector
      +
      +
      +
    • +
    • +
      +

      include

      +
      public static io.qdrant.client.grpc.Points.WithPayloadSelector include(List<String> fields)
      +
      Which payload fields to include in response.
      +
      +
      Parameters:
      +
      fields - the list of fields to include.
      +
      Returns:
      +
      a new instance of Points.WithPayloadSelector
      +
      +
      +
    • +
    • +
      +

      exclude

      +
      public static io.qdrant.client.grpc.Points.WithPayloadSelector exclude(List<String> fields)
      +
      Which payload fields to exclude in response.
      +
      +
      Parameters:
      +
      fields - the list of fields to exclude.
      +
      Returns:
      +
      a new instance of Points.WithPayloadSelector
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/WithVectorsSelectorFactory.html b/io/qdrant/client/WithVectorsSelectorFactory.html new file mode 100644 index 00000000..f65ce96f --- /dev/null +++ b/io/qdrant/client/WithVectorsSelectorFactory.html @@ -0,0 +1,157 @@ + + + + +WithVectorsSelectorFactory (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class WithVectorsSelectorFactory

+
+
java.lang.Object +
io.qdrant.client.WithVectorsSelectorFactory
+
+
+
+
public final class WithVectorsSelectorFactory +extends Object
+
Convenience methods for constructing Points.WithVectorsSelector
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static io.qdrant.client.grpc.Points.WithVectorsSelector
    +
    enable(boolean enable)
    +
    +
    Whether to include vectors in response.
    +
    +
    static io.qdrant.client.grpc.Points.WithVectorsSelector
    + +
    +
    List of named vectors to include in response.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      enable

      +
      public static io.qdrant.client.grpc.Points.WithVectorsSelector enable(boolean enable)
      +
      Whether to include vectors in response.
      +
      +
      Parameters:
      +
      enable - if true, to include vectors, if false, none.
      +
      Returns:
      +
      a new instance of Points.WithVectorsSelector
      +
      +
      +
    • +
    • +
      +

      include

      +
      public static io.qdrant.client.grpc.Points.WithVectorsSelector include(List<String> names)
      +
      List of named vectors to include in response.
      +
      +
      Parameters:
      +
      names - The names of vectors.
      +
      Returns:
      +
      a new instance of Points.WithVectorsSelector
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/io/qdrant/client/package-summary.html b/io/qdrant/client/package-summary.html new file mode 100644 index 00000000..2ff1a3ef --- /dev/null +++ b/io/qdrant/client/package-summary.html @@ -0,0 +1,176 @@ + + + + +io.qdrant.client (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Package io.qdrant.client

+
+
+
@ParametersAreNonnullByDefault +package io.qdrant.client
+
+
package
+
+
+ +
+
+
+
+ + diff --git a/io/qdrant/client/package-tree.html b/io/qdrant/client/package-tree.html new file mode 100644 index 00000000..4c2e098e --- /dev/null +++ b/io/qdrant/client/package-tree.html @@ -0,0 +1,102 @@ + + + + +io.qdrant.client Class Hierarchy (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package io.qdrant.client

+
+
+

Class Hierarchy

+ +
+
+
+
+ + diff --git a/jquery-ui.overrides.css b/jquery-ui.overrides.css new file mode 100644 index 00000000..facf852c --- /dev/null +++ b/jquery-ui.overrides.css @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + /* Overrides the color of selection used in jQuery UI */ + background: #F8981D; + border: 1px solid #F8981D; +} diff --git a/legal/ADDITIONAL_LICENSE_INFO b/legal/ADDITIONAL_LICENSE_INFO new file mode 100644 index 00000000..ff700cd0 --- /dev/null +++ b/legal/ADDITIONAL_LICENSE_INFO @@ -0,0 +1,37 @@ + ADDITIONAL INFORMATION ABOUT LICENSING + +Certain files distributed by Oracle America, Inc. and/or its affiliates are +subject to the following clarification and special exception to the GPLv2, +based on the GNU Project exception for its Classpath libraries, known as the +GNU Classpath Exception. + +Note that Oracle includes multiple, independent programs in this software +package. Some of those programs are provided under licenses deemed +incompatible with the GPLv2 by the Free Software Foundation and others. +For example, the package includes programs licensed under the Apache +License, Version 2.0 and may include FreeType. Such programs are licensed +to you under their original licenses. + +Oracle facilitates your further distribution of this package by adding the +Classpath Exception to the necessary parts of its GPLv2 code, which permits +you to use that code in combination with other independent modules not +licensed under the GPLv2. However, note that this would not permit you to +commingle code under an incompatible license with Oracle's GPLv2 licensed +code by, for example, cutting and pasting such code into a file also +containing Oracle's GPLv2 licensed code and then distributing the result. + +Additionally, if you were to remove the Classpath Exception from any of the +files to which it applies and distribute the result, you would likely be +required to license some or all of the other code in that distribution under +the GPLv2 as well, and since the GPLv2 is incompatible with the license terms +of some items included in the distribution by Oracle, removing the Classpath +Exception could therefore effectively compromise your ability to further +distribute the package. + +Failing to distribute notices associated with some files may also create +unexpected legal consequences. + +Proceed with caution and we recommend that you obtain the advice of a lawyer +skilled in open source matters before removing the Classpath Exception or +making modifications to this package which may subsequently be redistributed +and/or involve the use of third party software. diff --git a/legal/ASSEMBLY_EXCEPTION b/legal/ASSEMBLY_EXCEPTION new file mode 100644 index 00000000..065b8d90 --- /dev/null +++ b/legal/ASSEMBLY_EXCEPTION @@ -0,0 +1,27 @@ + +OPENJDK ASSEMBLY EXCEPTION + +The OpenJDK source code made available by Oracle America, Inc. (Oracle) at +openjdk.java.net ("OpenJDK Code") is distributed under the terms of the GNU +General Public License version 2 +only ("GPL2"), with the following clarification and special exception. + + Linking this OpenJDK Code statically or dynamically with other code + is making a combined work based on this library. Thus, the terms + and conditions of GPL2 cover the whole combination. + + As a special exception, Oracle gives you permission to link this + OpenJDK Code with certain code licensed by Oracle as indicated at + http://openjdk.java.net/legal/exception-modules-2007-05-08.html + ("Designated Exception Modules") to produce an executable, + regardless of the license terms of the Designated Exception Modules, + and to copy and distribute the resulting executable under GPL2, + provided that the Designated Exception Modules continue to be + governed by the licenses under which they were offered by Oracle. + +As such, it allows licensees and sublicensees of Oracle's GPL2 OpenJDK Code +to build an executable that includes those portions of necessary code that +Oracle could not provide under GPL2 (or that Oracle has provided under GPL2 +with the Classpath exception). If you modify or add to the OpenJDK code, +that new GPL2 code may still be combined with Designated Exception Modules +if the new code is made subject to this exception by its copyright holder. diff --git a/legal/LICENSE b/legal/LICENSE new file mode 100644 index 00000000..8b400c7a --- /dev/null +++ b/legal/LICENSE @@ -0,0 +1,347 @@ +The GNU General Public License (GPL) + +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public License is intended to +guarantee your freedom to share and change free software--to make sure the +software is free for all its users. This General Public License applies to +most of the Free Software Foundation's software and to any other program whose +authors commit to using it. (Some other Free Software Foundation software is +covered by the GNU Library General Public License instead.) You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom to +distribute copies of free software (and charge for this service if you wish), +that you receive source code or can get it if you want it, that you can change +the software or use pieces of it in new free programs; and that you know you +can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to deny +you these rights or to ask you to surrender the rights. These restrictions +translate to certain responsibilities for you if you distribute copies of the +software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for +a fee, you must give the recipients all the rights that you have. You must +make sure that they, too, receive or can get the source code. And you must +show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, distribute +and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If the +software is modified by someone else and passed on, we want its recipients to +know that what they have is not the original, so that any problems introduced +by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that redistributors of a free program will +individually obtain patent licenses, in effect making the program proprietary. +To prevent this, we have made it clear that any patent must be licensed for +everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the terms of +this General Public License. The "Program", below, refers to any such program +or work, and a "work based on the Program" means either the Program or any +derivative work under copyright law: that is to say, a work containing the +Program or a portion of it, either verbatim or with modifications and/or +translated into another language. (Hereinafter, translation is included +without limitation in the term "modification".) Each licensee is addressed as +"you". + +Activities other than copying, distribution and modification are not covered by +this License; they are outside its scope. The act of running the Program is +not restricted, and the output from the Program is covered only if its contents +constitute a work based on the Program (independent of having been made by +running the Program). Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's source code as +you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this License +and to the absence of any warranty; and give any other recipients of the +Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you may +at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, thus +forming a work based on the Program, and copy and distribute such modifications +or work under the terms of Section 1 above, provided that you also meet all of +these conditions: + + a) You must cause the modified files to carry prominent notices stating + that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in whole or + in part contains or is derived from the Program or any part thereof, to be + licensed as a whole at no charge to all third parties under the terms of + this License. + + c) If the modified program normally reads commands interactively when run, + you must cause it, when started running for such interactive use in the + most ordinary way, to print or display an announcement including an + appropriate copyright notice and a notice that there is no warranty (or + else, saying that you provide a warranty) and that users may redistribute + the program under these conditions, and telling the user how to view a copy + of this License. (Exception: if the Program itself is interactive but does + not normally print such an announcement, your work based on the Program is + not required to print an announcement.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be reasonably +considered independent and separate works in themselves, then this License, and +its terms, do not apply to those sections when you distribute them as separate +works. But when you distribute the same sections as part of a whole which is a +work based on the Program, the distribution of the whole must be on the terms +of this License, whose permissions for other licensees extend to the entire +whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise the +right to control the distribution of derivative or collective works based on +the Program. + +In addition, mere aggregation of another work not based on the Program with the +Program (or with a work based on the Program) on a volume of a storage or +distribution medium does not bring the other work under the scope of this +License. + +3. You may copy and distribute the Program (or a work based on it, under +Section 2) in object code or executable form under the terms of Sections 1 and +2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable source + code, which must be distributed under the terms of Sections 1 and 2 above + on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three years, to + give any third party, for a charge no more than your cost of physically + performing source distribution, a complete machine-readable copy of the + corresponding source code, to be distributed under the terms of Sections 1 + and 2 above on a medium customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer to + distribute corresponding source code. (This alternative is allowed only + for noncommercial distribution and only if you received the program in + object code or executable form with such an offer, in accord with + Subsection b above.) + +The source code for a work means the preferred form of the work for making +modifications to it. For an executable work, complete source code means all +the source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and installation +of the executable. However, as a special exception, the source code +distributed need not include anything that is normally distributed (in either +source or binary form) with the major components (compiler, kernel, and so on) +of the operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the source +code from the same place counts as distribution of the source code, even though +third parties are not compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as +expressly provided under this License. Any attempt otherwise to copy, modify, +sublicense or distribute the Program is void, and will automatically terminate +your rights under this License. However, parties who have received copies, or +rights, from you under this License will not have their licenses terminated so +long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed it. +However, nothing else grants you permission to modify or distribute the Program +or its derivative works. These actions are prohibited by law if you do not +accept this License. Therefore, by modifying or distributing the Program (or +any work based on the Program), you indicate your acceptance of this License to +do so, and all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the Program), +the recipient automatically receives a license from the original licensor to +copy, distribute or modify the Program subject to these terms and conditions. +You may not impose any further restrictions on the recipients' exercise of the +rights granted herein. You are not responsible for enforcing compliance by +third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), conditions +are imposed on you (whether by court order, agreement or otherwise) that +contradict the conditions of this License, they do not excuse you from the +conditions of this License. If you cannot distribute so as to satisfy +simultaneously your obligations under this License and any other pertinent +obligations, then as a consequence you may not distribute the Program at all. +For example, if a patent license would not permit royalty-free redistribution +of the Program by all those who receive copies directly or indirectly through +you, then the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or +other property right claims or to contest validity of any such claims; this +section has the sole purpose of protecting the integrity of the free software +distribution system, which is implemented by public license practices. Many +people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose that +choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain +countries either by patents or by copyrighted interfaces, the original +copyright holder who places the Program under this License may add an explicit +geographical distribution limitation excluding those countries, so that +distribution is permitted only in or among countries not thus excluded. In +such case, this License incorporates the limitation as if written in the body +of this License. + +9. The Free Software Foundation may publish revised and/or new versions of the +General Public License from time to time. Such new versions will be similar in +spirit to the present version, but may differ in detail to address new problems +or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any later +version", you have the option of following the terms and conditions either of +that version or of any later version published by the Free Software Foundation. +If the Program does not specify a version number of this License, you may +choose any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs +whose distribution conditions are different, write to the author to ask for +permission. For software which is copyrighted by the Free Software Foundation, +write to the Free Software Foundation; we sometimes make exceptions for this. +Our decision will be guided by the two goals of preserving the free status of +all derivatives of our free software and of promoting the sharing and reuse of +software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE +PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, +YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL +ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE +PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR +INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA +BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER +OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible +use to the public, the best way to achieve this is to make it free software +which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach +them to the start of each source file to most effectively convey the exclusion +of warranty; and each file should have at least the "copyright" line and a +pointer to where the full notice is found. + + One line to give the program's name and a brief idea of what it does. + + Copyright (C) + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this when it +starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author Gnomovision comes + with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free + software, and you are welcome to redistribute it under certain conditions; + type 'show c' for details. + +The hypothetical commands 'show w' and 'show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may be +called something other than 'show w' and 'show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your school, +if any, to sign a "copyright disclaimer" for the program, if necessary. Here +is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + 'Gnomovision' (which makes passes at compilers) written by James Hacker. + + signature of Ty Coon, 1 April 1989 + + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General Public +License instead of this License. + + +"CLASSPATH" EXCEPTION TO THE GPL + +Certain source files distributed by Oracle America and/or its affiliates are +subject to the following clarification and special exception to the GPL, but +only where Oracle has expressly included in the particular source file's header +the words "Oracle designates this particular file as subject to the "Classpath" +exception as provided by Oracle in the LICENSE file that accompanied this code." + + Linking this library statically or dynamically with other modules is making + a combined work based on this library. Thus, the terms and conditions of + the GNU General Public License cover the whole combination. + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent modules, + and to copy and distribute the resulting executable under terms of your + choice, provided that you also meet, for each linked independent module, + the terms and conditions of the license of that module. An independent + module is a module which is not derived from or based on this library. If + you modify this library, you may extend this exception to your version of + the library, but you are not obligated to do so. If you do not wish to do + so, delete this exception statement from your version. diff --git a/legal/jquery.md b/legal/jquery.md new file mode 100644 index 00000000..a763ec6f --- /dev/null +++ b/legal/jquery.md @@ -0,0 +1,26 @@ +## jQuery v3.7.1 + +### jQuery License +``` +jQuery v 3.7.1 +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` diff --git a/legal/jqueryUI.md b/legal/jqueryUI.md new file mode 100644 index 00000000..46bfbaa5 --- /dev/null +++ b/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.14.1 + +### jQuery UI License +``` +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/member-search-index.js b/member-search-index.js new file mode 100644 index 00000000..92b150bd --- /dev/null +++ b/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"io.qdrant.client","c":"ExpressionFactory","l":"abs(Points.Expression)","u":"abs(io.qdrant.client.grpc.Points.Expression)"},{"p":"io.qdrant.client","c":"MetadataCredentials","l":"applyRequestMetadata(CallCredentials.RequestInfo, Executor, CallCredentials.MetadataApplier)","u":"applyRequestMetadata(io.grpc.CallCredentials.RequestInfo,java.util.concurrent.Executor,io.grpc.CallCredentials.MetadataApplier)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"batchUpdateAsync(Points.UpdateBatchPoints, Duration)","u":"batchUpdateAsync(io.qdrant.client.grpc.Points.UpdateBatchPoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"batchUpdateAsync(String, List)","u":"batchUpdateAsync(java.lang.String,java.util.List)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"batchUpdateAsync(String, List, Boolean, Points.WriteOrdering, Duration)","u":"batchUpdateAsync(java.lang.String,java.util.List,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrdering,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient.Builder","l":"build()"},{"p":"io.qdrant.client","c":"QdrantGrpcClient","l":"channel()"},{"p":"io.qdrant.client","c":"QdrantClient","l":"clearPayloadAsync(Points.ClearPayloadPoints, Duration)","u":"clearPayloadAsync(io.qdrant.client.grpc.Points.ClearPayloadPoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"clearPayloadAsync(String, Boolean, Points.WriteOrderingType, Duration)","u":"clearPayloadAsync(java.lang.String,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"clearPayloadAsync(String, Common.Filter, Boolean, Points.WriteOrderingType, Duration)","u":"clearPayloadAsync(java.lang.String,io.qdrant.client.grpc.Common.Filter,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"clearPayloadAsync(String, Common.PointId, Boolean, Points.WriteOrderingType, Duration)","u":"clearPayloadAsync(java.lang.String,io.qdrant.client.grpc.Common.PointId,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"clearPayloadAsync(String, List, Boolean, Points.WriteOrderingType, Duration)","u":"clearPayloadAsync(java.lang.String,java.util.List,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"clearPayloadAsync(String, Points.PointsSelector, Boolean, Points.WriteOrderingType, Duration)","u":"clearPayloadAsync(java.lang.String,io.qdrant.client.grpc.Points.PointsSelector,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"close()"},{"p":"io.qdrant.client","c":"QdrantGrpcClient","l":"close()"},{"p":"io.qdrant.client","c":"QdrantClient","l":"collectionExistsAsync(String)","u":"collectionExistsAsync(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"collectionExistsAsync(String, Duration)","u":"collectionExistsAsync(java.lang.String,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient","l":"collections()"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"condition(Common.Condition)","u":"condition(io.qdrant.client.grpc.Common.Condition)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"constant(float)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"context(Points.ContextInput)","u":"context(io.qdrant.client.grpc.Points.ContextInput)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"countAsync(String)","u":"countAsync(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"countAsync(String, Common.Filter, Boolean)","u":"countAsync(java.lang.String,io.qdrant.client.grpc.Common.Filter,java.lang.Boolean)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"countAsync(String, Common.Filter, Boolean, Duration)","u":"countAsync(java.lang.String,io.qdrant.client.grpc.Common.Filter,java.lang.Boolean,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"countAsync(String, Duration)","u":"countAsync(java.lang.String,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createAliasAsync(String, String)","u":"createAliasAsync(java.lang.String,java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createAliasAsync(String, String, Duration)","u":"createAliasAsync(java.lang.String,java.lang.String,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createCollectionAsync(Collections.CreateCollection)","u":"createCollectionAsync(io.qdrant.client.grpc.Collections.CreateCollection)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createCollectionAsync(Collections.CreateCollection, Duration)","u":"createCollectionAsync(io.qdrant.client.grpc.Collections.CreateCollection,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createCollectionAsync(String, Collections.VectorParams)","u":"createCollectionAsync(java.lang.String,io.qdrant.client.grpc.Collections.VectorParams)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createCollectionAsync(String, Collections.VectorParams, Duration)","u":"createCollectionAsync(java.lang.String,io.qdrant.client.grpc.Collections.VectorParams,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createCollectionAsync(String, Map)","u":"createCollectionAsync(java.lang.String,java.util.Map)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createCollectionAsync(String, Map, Duration)","u":"createCollectionAsync(java.lang.String,java.util.Map,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createFullSnapshotAsync()"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createFullSnapshotAsync(Duration)","u":"createFullSnapshotAsync(java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createPayloadIndexAsync(Points.CreateFieldIndexCollection, Duration)","u":"createPayloadIndexAsync(io.qdrant.client.grpc.Points.CreateFieldIndexCollection,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createPayloadIndexAsync(String, String, Collections.PayloadSchemaType, Collections.PayloadIndexParams, Boolean, Points.WriteOrderingType, Duration)","u":"createPayloadIndexAsync(java.lang.String,java.lang.String,io.qdrant.client.grpc.Collections.PayloadSchemaType,io.qdrant.client.grpc.Collections.PayloadIndexParams,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createShardKeyAsync(Collections.CreateShardKeyRequest)","u":"createShardKeyAsync(io.qdrant.client.grpc.Collections.CreateShardKeyRequest)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createShardKeyAsync(Collections.CreateShardKeyRequest, Duration)","u":"createShardKeyAsync(io.qdrant.client.grpc.Collections.CreateShardKeyRequest,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createSnapshotAsync(String)","u":"createSnapshotAsync(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createSnapshotAsync(String, Duration)","u":"createSnapshotAsync(java.lang.String,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createVectorNameAsync(Points.CreateVectorNameRequest)","u":"createVectorNameAsync(io.qdrant.client.grpc.Points.CreateVectorNameRequest)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"createVectorNameAsync(Points.CreateVectorNameRequest, Duration)","u":"createVectorNameAsync(io.qdrant.client.grpc.Points.CreateVectorNameRequest,java.time.Duration)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"datetime(String)","u":"datetime(java.lang.String)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"datetimeKey(String)","u":"datetimeKey(java.lang.String)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"datetimeRange(String, Common.DatetimeRange)","u":"datetimeRange(java.lang.String,io.qdrant.client.grpc.Common.DatetimeRange)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteAliasAsync(String)","u":"deleteAliasAsync(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteAliasAsync(String, Duration)","u":"deleteAliasAsync(java.lang.String,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteAsync(Points.DeletePoints)","u":"deleteAsync(io.qdrant.client.grpc.Points.DeletePoints)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteAsync(Points.DeletePoints, Duration)","u":"deleteAsync(io.qdrant.client.grpc.Points.DeletePoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteAsync(String, Common.Filter)","u":"deleteAsync(java.lang.String,io.qdrant.client.grpc.Common.Filter)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteAsync(String, Common.Filter, Duration)","u":"deleteAsync(java.lang.String,io.qdrant.client.grpc.Common.Filter,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteAsync(String, List)","u":"deleteAsync(java.lang.String,java.util.List)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteAsync(String, List, Duration)","u":"deleteAsync(java.lang.String,java.util.List,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteCollectionAsync(String)","u":"deleteCollectionAsync(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteCollectionAsync(String, Duration)","u":"deleteCollectionAsync(java.lang.String,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteFullSnapshotAsync(String)","u":"deleteFullSnapshotAsync(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteFullSnapshotAsync(String, Duration)","u":"deleteFullSnapshotAsync(java.lang.String,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deletePayloadAsync(Points.DeletePayloadPoints, Duration)","u":"deletePayloadAsync(io.qdrant.client.grpc.Points.DeletePayloadPoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deletePayloadAsync(String, List, Boolean, Points.WriteOrderingType, Duration)","u":"deletePayloadAsync(java.lang.String,java.util.List,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deletePayloadAsync(String, List, Common.Filter, Boolean, Points.WriteOrderingType, Duration)","u":"deletePayloadAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Common.Filter,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deletePayloadAsync(String, List, Common.PointId, Boolean, Points.WriteOrderingType, Duration)","u":"deletePayloadAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Common.PointId,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deletePayloadAsync(String, List, List, Boolean, Points.WriteOrderingType, Duration)","u":"deletePayloadAsync(java.lang.String,java.util.List,java.util.List,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deletePayloadAsync(String, List, Points.PointsSelector, Boolean, Points.WriteOrderingType, Duration)","u":"deletePayloadAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Points.PointsSelector,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deletePayloadIndexAsync(String, String, Boolean, Points.WriteOrderingType, Duration)","u":"deletePayloadIndexAsync(java.lang.String,java.lang.String,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteShardKeyAsync(Collections.DeleteShardKeyRequest)","u":"deleteShardKeyAsync(io.qdrant.client.grpc.Collections.DeleteShardKeyRequest)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteShardKeyAsync(Collections.DeleteShardKeyRequest, Duration)","u":"deleteShardKeyAsync(io.qdrant.client.grpc.Collections.DeleteShardKeyRequest,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteSnapshotAsync(String, String)","u":"deleteSnapshotAsync(java.lang.String,java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteSnapshotAsync(String, String, Duration)","u":"deleteSnapshotAsync(java.lang.String,java.lang.String,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteVectorNameAsync(Points.DeleteVectorNameRequest)","u":"deleteVectorNameAsync(io.qdrant.client.grpc.Points.DeleteVectorNameRequest)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteVectorNameAsync(Points.DeleteVectorNameRequest, Duration)","u":"deleteVectorNameAsync(io.qdrant.client.grpc.Points.DeleteVectorNameRequest,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteVectorsAsync(Points.DeletePointVectors, Duration)","u":"deleteVectorsAsync(io.qdrant.client.grpc.Points.DeletePointVectors,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteVectorsAsync(String, List, Common.Filter)","u":"deleteVectorsAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Common.Filter)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteVectorsAsync(String, List, Common.Filter, Boolean, Points.WriteOrderingType, Duration)","u":"deleteVectorsAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Common.Filter,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteVectorsAsync(String, List, Common.Filter, Duration)","u":"deleteVectorsAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Common.Filter,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteVectorsAsync(String, List, List)","u":"deleteVectorsAsync(java.lang.String,java.util.List,java.util.List)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteVectorsAsync(String, List, List, Boolean, Points.WriteOrderingType, Duration)","u":"deleteVectorsAsync(java.lang.String,java.util.List,java.util.List,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteVectorsAsync(String, List, List, Duration)","u":"deleteVectorsAsync(java.lang.String,java.util.List,java.util.List,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"deleteVectorsAsync(String, List, Points.PointsSelector, Boolean, Points.WriteOrderingType, Duration)","u":"deleteVectorsAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Points.PointsSelector,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"discover(Points.DiscoverInput)","u":"discover(io.qdrant.client.grpc.Points.DiscoverInput)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"discoverAsync(Points.DiscoverPoints)","u":"discoverAsync(io.qdrant.client.grpc.Points.DiscoverPoints)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"discoverAsync(Points.DiscoverPoints, Duration)","u":"discoverAsync(io.qdrant.client.grpc.Points.DiscoverPoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"discoverBatchAsync(String, List, Points.ReadConsistency)","u":"discoverBatchAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Points.ReadConsistency)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"discoverBatchAsync(String, List, Points.ReadConsistency, Duration)","u":"discoverBatchAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Points.ReadConsistency,java.time.Duration)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"div(Points.DivExpression)","u":"div(io.qdrant.client.grpc.Points.DivExpression)"},{"p":"io.qdrant.client","c":"WithPayloadSelectorFactory","l":"enable(boolean)"},{"p":"io.qdrant.client","c":"WithVectorsSelectorFactory","l":"enable(boolean)"},{"p":"io.qdrant.client","c":"WithPayloadSelectorFactory","l":"exclude(List)","u":"exclude(java.util.List)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"exp(Points.Expression)","u":"exp(io.qdrant.client.grpc.Points.Expression)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"expDecay(Points.DecayParamsExpression)","u":"expDecay(io.qdrant.client.grpc.Points.DecayParamsExpression)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"facetAsync(Points.FacetCounts)","u":"facetAsync(io.qdrant.client.grpc.Points.FacetCounts)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"facetAsync(Points.FacetCounts, Duration)","u":"facetAsync(io.qdrant.client.grpc.Points.FacetCounts,java.time.Duration)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"filter(Common.Filter)","u":"filter(io.qdrant.client.grpc.Common.Filter)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"formula(Points.Formula)","u":"formula(io.qdrant.client.grpc.Points.Formula)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"fusion(Points.Fusion)","u":"fusion(io.qdrant.client.grpc.Points.Fusion)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"gaussDecay(Points.DecayParamsExpression)","u":"gaussDecay(io.qdrant.client.grpc.Points.DecayParamsExpression)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"geoBoundingBox(String, double, double, double, double)","u":"geoBoundingBox(java.lang.String,double,double,double,double)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"geoDistance(Points.GeoDistance)","u":"geoDistance(io.qdrant.client.grpc.Points.GeoDistance)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"geoPolygon(String, Common.GeoLineString, List)","u":"geoPolygon(java.lang.String,io.qdrant.client.grpc.Common.GeoLineString,java.util.List)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"geoRadius(String, double, double, float)","u":"geoRadius(java.lang.String,double,double,float)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"getCollectionClusterInfoAsync(String)","u":"getCollectionClusterInfoAsync(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"getCollectionClusterInfoAsync(String, Duration)","u":"getCollectionClusterInfoAsync(java.lang.String,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"getCollectionInfoAsync(String)","u":"getCollectionInfoAsync(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"getCollectionInfoAsync(String, Duration)","u":"getCollectionInfoAsync(java.lang.String,java.time.Duration)"},{"p":"io.qdrant.client","c":"VectorOutputHelper","l":"getDenseVector(Points.VectorOutput)","u":"getDenseVector(io.qdrant.client.grpc.Points.VectorOutput)"},{"p":"io.qdrant.client","c":"VectorOutputHelper","l":"getMultiVector(Points.VectorOutput)","u":"getMultiVector(io.qdrant.client.grpc.Points.VectorOutput)"},{"p":"io.qdrant.client","c":"VectorOutputHelper","l":"getSparseVector(Points.VectorOutput)","u":"getSparseVector(io.qdrant.client.grpc.Points.VectorOutput)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"grpcClient()"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"hasId(Common.PointId)","u":"hasId(io.qdrant.client.grpc.Common.PointId)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"hasId(List)","u":"hasId(java.util.List)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"hasVector(String)","u":"hasVector(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"healthCheckAsync()"},{"p":"io.qdrant.client","c":"QdrantClient","l":"healthCheckAsync(Duration)","u":"healthCheckAsync(java.time.Duration)"},{"p":"io.qdrant.client","c":"PointIdFactory","l":"id(long)"},{"p":"io.qdrant.client","c":"PointIdFactory","l":"id(UUID)","u":"id(java.util.UUID)"},{"p":"io.qdrant.client","c":"WithPayloadSelectorFactory","l":"include(List)","u":"include(java.util.List)"},{"p":"io.qdrant.client","c":"WithVectorsSelectorFactory","l":"include(List)","u":"include(java.util.List)"},{"p":"io.qdrant.client","c":"VersionsCompatibilityChecker","l":"isCompatible(String, String)","u":"isCompatible(java.lang.String,java.lang.String)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"isEmpty(String)","u":"isEmpty(java.lang.String)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"isNull(String)","u":"isNull(java.lang.String)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"linDecay(Points.DecayParamsExpression)","u":"linDecay(io.qdrant.client.grpc.Points.DecayParamsExpression)"},{"p":"io.qdrant.client","c":"ValueFactory","l":"list(List)","u":"list(java.util.List)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"listAliasesAsync()"},{"p":"io.qdrant.client","c":"QdrantClient","l":"listAliasesAsync(Duration)","u":"listAliasesAsync(java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"listCollectionAliasesAsync(String)","u":"listCollectionAliasesAsync(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"listCollectionAliasesAsync(String, Duration)","u":"listCollectionAliasesAsync(java.lang.String,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"listCollectionsAsync()"},{"p":"io.qdrant.client","c":"QdrantClient","l":"listCollectionsAsync(Duration)","u":"listCollectionsAsync(java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"listFullSnapshotAsync()"},{"p":"io.qdrant.client","c":"QdrantClient","l":"listFullSnapshotAsync(Duration)","u":"listFullSnapshotAsync(java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"listShardKeysAsync(String)","u":"listShardKeysAsync(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"listShardKeysAsync(String, Duration)","u":"listShardKeysAsync(java.lang.String,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"listSnapshotAsync(String)","u":"listSnapshotAsync(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"listSnapshotAsync(String, Duration)","u":"listSnapshotAsync(java.lang.String,java.time.Duration)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"ln(Points.Expression)","u":"ln(io.qdrant.client.grpc.Points.Expression)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"log10(Points.Expression)","u":"log10(io.qdrant.client.grpc.Points.Expression)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"match(String, boolean)","u":"match(java.lang.String,boolean)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"match(String, long)","u":"match(java.lang.String,long)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"matchExceptKeywords(String, List)","u":"matchExceptKeywords(java.lang.String,java.util.List)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"matchExceptValues(String, List)","u":"matchExceptValues(java.lang.String,java.util.List)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"matchKeyword(String, String)","u":"matchKeyword(java.lang.String,java.lang.String)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"matchKeywords(String, List)","u":"matchKeywords(java.lang.String,java.util.List)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"matchPhrase(String, String)","u":"matchPhrase(java.lang.String,java.lang.String)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"matchText(String, String)","u":"matchText(java.lang.String,java.lang.String)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"matchTextAny(String, String)","u":"matchTextAny(java.lang.String,java.lang.String)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"matchValues(String, List)","u":"matchValues(java.lang.String,java.util.List)"},{"p":"io.qdrant.client","c":"MetadataCredentials","l":"MetadataCredentials(String, Map)","u":"%3Cinit%3E(java.lang.String,java.util.Map)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"mult(Points.MultExpression)","u":"mult(io.qdrant.client.grpc.Points.MultExpression)"},{"p":"io.qdrant.client","c":"VectorFactory","l":"multiVector(float[][])"},{"p":"io.qdrant.client","c":"VectorFactory","l":"multiVector(List>)","u":"multiVector(java.util.List)"},{"p":"io.qdrant.client","c":"VectorInputFactory","l":"multiVectorInput(float[][])"},{"p":"io.qdrant.client","c":"VectorInputFactory","l":"multiVectorInput(List>)","u":"multiVectorInput(java.util.List)"},{"p":"io.qdrant.client","c":"VectorsFactory","l":"namedVectors(Map)","u":"namedVectors(java.util.Map)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"nearest(Common.PointId)","u":"nearest(io.qdrant.client.grpc.Common.PointId)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"nearest(float...)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"nearest(float[][])"},{"p":"io.qdrant.client","c":"QueryFactory","l":"nearest(List)","u":"nearest(java.util.List)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"nearest(List, List)","u":"nearest(java.util.List,java.util.List)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"nearest(long)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"nearest(Points.Document)","u":"nearest(io.qdrant.client.grpc.Points.Document)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"nearest(Points.Image)","u":"nearest(io.qdrant.client.grpc.Points.Image)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"nearest(Points.InferenceObject)","u":"nearest(io.qdrant.client.grpc.Points.InferenceObject)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"nearest(Points.VectorInput)","u":"nearest(io.qdrant.client.grpc.Points.VectorInput)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"nearest(Points.VectorInput, Points.Mmr)","u":"nearest(io.qdrant.client.grpc.Points.VectorInput,io.qdrant.client.grpc.Points.Mmr)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"nearest(UUID)","u":"nearest(java.util.UUID)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"nearestMultiVector(List>)","u":"nearestMultiVector(java.util.List)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"negate(Points.Expression)","u":"negate(io.qdrant.client.grpc.Points.Expression)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"nested(String, Common.Condition)","u":"nested(java.lang.String,io.qdrant.client.grpc.Common.Condition)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"nested(String, Common.Filter)","u":"nested(java.lang.String,io.qdrant.client.grpc.Common.Filter)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient","l":"newBuilder(ManagedChannel)","u":"newBuilder(io.grpc.ManagedChannel)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient","l":"newBuilder(ManagedChannel, boolean)","u":"newBuilder(io.grpc.ManagedChannel,boolean)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient","l":"newBuilder(ManagedChannel, boolean, boolean)","u":"newBuilder(io.grpc.ManagedChannel,boolean,boolean)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient","l":"newBuilder(String)","u":"newBuilder(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient","l":"newBuilder(String, int)","u":"newBuilder(java.lang.String,int)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient","l":"newBuilder(String, int, boolean)","u":"newBuilder(java.lang.String,int,boolean)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient","l":"newBuilder(String, int, boolean, boolean)","u":"newBuilder(java.lang.String,int,boolean,boolean)"},{"p":"io.qdrant.client","c":"ValueFactory","l":"nullValue()"},{"p":"io.qdrant.client","c":"QueryFactory","l":"orderBy(Points.OrderBy)","u":"orderBy(io.qdrant.client.grpc.Points.OrderBy)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"orderBy(String)","u":"orderBy(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"overwritePayloadAsync(Points.SetPayloadPoints, Duration)","u":"overwritePayloadAsync(io.qdrant.client.grpc.Points.SetPayloadPoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"overwritePayloadAsync(String, Map, Boolean, Points.WriteOrderingType, Duration)","u":"overwritePayloadAsync(java.lang.String,java.util.Map,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"overwritePayloadAsync(String, Map, Common.Filter, Boolean, Points.WriteOrderingType, Duration)","u":"overwritePayloadAsync(java.lang.String,java.util.Map,io.qdrant.client.grpc.Common.Filter,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"overwritePayloadAsync(String, Map, Common.PointId, Boolean, Points.WriteOrderingType, Duration)","u":"overwritePayloadAsync(java.lang.String,java.util.Map,io.qdrant.client.grpc.Common.PointId,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"overwritePayloadAsync(String, Map, List, Boolean, Points.WriteOrderingType, Duration)","u":"overwritePayloadAsync(java.lang.String,java.util.Map,java.util.List,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"overwritePayloadAsync(String, Map, Points.PointsSelector, Boolean, Points.WriteOrderingType, Duration)","u":"overwritePayloadAsync(java.lang.String,java.util.Map,io.qdrant.client.grpc.Points.PointsSelector,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"overwritePayloadAsync(String, Map, Points.PointsSelector, Boolean, String, Points.WriteOrderingType, Duration)","u":"overwritePayloadAsync(java.lang.String,java.util.Map,io.qdrant.client.grpc.Points.PointsSelector,java.lang.Boolean,java.lang.String,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient","l":"points()"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"pow(Points.PowExpression)","u":"pow(io.qdrant.client.grpc.Points.PowExpression)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient","l":"qdrant()"},{"p":"io.qdrant.client","c":"QdrantClient","l":"QdrantClient(QdrantGrpcClient)","u":"%3Cinit%3E(io.qdrant.client.QdrantGrpcClient)"},{"p":"io.qdrant.client","c":"QdrantException","l":"QdrantException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"queryAsync(Points.QueryPoints)","u":"queryAsync(io.qdrant.client.grpc.Points.QueryPoints)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"queryAsync(Points.QueryPoints, Duration)","u":"queryAsync(io.qdrant.client.grpc.Points.QueryPoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"queryBatchAsync(String, List)","u":"queryBatchAsync(java.lang.String,java.util.List)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"queryBatchAsync(String, List, Points.ReadConsistency)","u":"queryBatchAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Points.ReadConsistency)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"queryBatchAsync(String, List, Points.ReadConsistency, Duration)","u":"queryBatchAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Points.ReadConsistency,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"queryGroupsAsync(Points.QueryPointGroups)","u":"queryGroupsAsync(io.qdrant.client.grpc.Points.QueryPointGroups)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"queryGroupsAsync(Points.QueryPointGroups, Duration)","u":"queryGroupsAsync(io.qdrant.client.grpc.Points.QueryPointGroups,java.time.Duration)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"range(String, Common.Range)","u":"range(java.lang.String,io.qdrant.client.grpc.Common.Range)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"recommend(Points.RecommendInput)","u":"recommend(io.qdrant.client.grpc.Points.RecommendInput)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"recommendAsync(Points.RecommendPoints)","u":"recommendAsync(io.qdrant.client.grpc.Points.RecommendPoints)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"recommendAsync(Points.RecommendPoints, Duration)","u":"recommendAsync(io.qdrant.client.grpc.Points.RecommendPoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"recommendBatchAsync(String, List, Points.ReadConsistency)","u":"recommendBatchAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Points.ReadConsistency)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"recommendBatchAsync(String, List, Points.ReadConsistency, Duration)","u":"recommendBatchAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Points.ReadConsistency,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"recommendGroupsAsync(Points.RecommendPointGroups)","u":"recommendGroupsAsync(io.qdrant.client.grpc.Points.RecommendPointGroups)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"recommendGroupsAsync(Points.RecommendPointGroups, Duration)","u":"recommendGroupsAsync(io.qdrant.client.grpc.Points.RecommendPointGroups,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"recreateCollectionAsync(Collections.CreateCollection)","u":"recreateCollectionAsync(io.qdrant.client.grpc.Collections.CreateCollection)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"recreateCollectionAsync(Collections.CreateCollection, Duration)","u":"recreateCollectionAsync(io.qdrant.client.grpc.Collections.CreateCollection,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"recreateCollectionAsync(String, Collections.VectorParams)","u":"recreateCollectionAsync(java.lang.String,io.qdrant.client.grpc.Collections.VectorParams)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"recreateCollectionAsync(String, Collections.VectorParams, Duration)","u":"recreateCollectionAsync(java.lang.String,io.qdrant.client.grpc.Collections.VectorParams,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"recreateCollectionAsync(String, Map)","u":"recreateCollectionAsync(java.lang.String,java.util.Map)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"recreateCollectionAsync(String, Map, Duration)","u":"recreateCollectionAsync(java.lang.String,java.util.Map,java.time.Duration)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"relevanceFeedback(Points.RelevanceFeedbackInput)","u":"relevanceFeedback(io.qdrant.client.grpc.Points.RelevanceFeedbackInput)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"renameAliasAsync(String, String)","u":"renameAliasAsync(java.lang.String,java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"renameAliasAsync(String, String, Duration)","u":"renameAliasAsync(java.lang.String,java.lang.String,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"retrieveAsync(Points.GetPoints, Duration)","u":"retrieveAsync(io.qdrant.client.grpc.Points.GetPoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"retrieveAsync(String, Common.PointId, boolean, boolean, Points.ReadConsistency)","u":"retrieveAsync(java.lang.String,io.qdrant.client.grpc.Common.PointId,boolean,boolean,io.qdrant.client.grpc.Points.ReadConsistency)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"retrieveAsync(String, Common.PointId, Points.ReadConsistency)","u":"retrieveAsync(java.lang.String,io.qdrant.client.grpc.Common.PointId,io.qdrant.client.grpc.Points.ReadConsistency)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"retrieveAsync(String, List, boolean, boolean, Points.ReadConsistency)","u":"retrieveAsync(java.lang.String,java.util.List,boolean,boolean,io.qdrant.client.grpc.Points.ReadConsistency)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"retrieveAsync(String, List, Points.ReadConsistency)","u":"retrieveAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Points.ReadConsistency)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"retrieveAsync(String, List, Points.WithPayloadSelector, Points.WithVectorsSelector, Points.ReadConsistency)","u":"retrieveAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Points.WithPayloadSelector,io.qdrant.client.grpc.Points.WithVectorsSelector,io.qdrant.client.grpc.Points.ReadConsistency)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"retrieveAsync(String, List, Points.WithPayloadSelector, Points.WithVectorsSelector, Points.ReadConsistency, Duration)","u":"retrieveAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Points.WithPayloadSelector,io.qdrant.client.grpc.Points.WithVectorsSelector,io.qdrant.client.grpc.Points.ReadConsistency,java.time.Duration)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"rrf(Points.Rrf)","u":"rrf(io.qdrant.client.grpc.Points.Rrf)"},{"p":"io.qdrant.client","c":"QueryFactory","l":"sample(Points.Sample)","u":"sample(io.qdrant.client.grpc.Points.Sample)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"scrollAsync(Points.ScrollPoints)","u":"scrollAsync(io.qdrant.client.grpc.Points.ScrollPoints)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"scrollAsync(Points.ScrollPoints, Duration)","u":"scrollAsync(io.qdrant.client.grpc.Points.ScrollPoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"searchAsync(Points.SearchPoints)","u":"searchAsync(io.qdrant.client.grpc.Points.SearchPoints)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"searchAsync(Points.SearchPoints, Duration)","u":"searchAsync(io.qdrant.client.grpc.Points.SearchPoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"searchBatchAsync(String, List, Points.ReadConsistency)","u":"searchBatchAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Points.ReadConsistency)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"searchBatchAsync(String, List, Points.ReadConsistency, Duration)","u":"searchBatchAsync(java.lang.String,java.util.List,io.qdrant.client.grpc.Points.ReadConsistency,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"searchGroupsAsync(Points.SearchPointGroups)","u":"searchGroupsAsync(io.qdrant.client.grpc.Points.SearchPointGroups)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"searchGroupsAsync(Points.SearchPointGroups, Duration)","u":"searchGroupsAsync(io.qdrant.client.grpc.Points.SearchPointGroups,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"searchMatrixOffsetsAsync(Points.SearchMatrixPoints)","u":"searchMatrixOffsetsAsync(io.qdrant.client.grpc.Points.SearchMatrixPoints)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"searchMatrixOffsetsAsync(Points.SearchMatrixPoints, Duration)","u":"searchMatrixOffsetsAsync(io.qdrant.client.grpc.Points.SearchMatrixPoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"searchMatrixPairsAsync(Points.SearchMatrixPoints)","u":"searchMatrixPairsAsync(io.qdrant.client.grpc.Points.SearchMatrixPoints)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"searchMatrixPairsAsync(Points.SearchMatrixPoints, Duration)","u":"searchMatrixPairsAsync(io.qdrant.client.grpc.Points.SearchMatrixPoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"setPayloadAsync(Points.SetPayloadPoints, Duration)","u":"setPayloadAsync(io.qdrant.client.grpc.Points.SetPayloadPoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"setPayloadAsync(String, Map, Boolean, Points.WriteOrderingType, Duration)","u":"setPayloadAsync(java.lang.String,java.util.Map,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"setPayloadAsync(String, Map, Common.Filter, Boolean, Points.WriteOrderingType, Duration)","u":"setPayloadAsync(java.lang.String,java.util.Map,io.qdrant.client.grpc.Common.Filter,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"setPayloadAsync(String, Map, Common.PointId, Boolean, Points.WriteOrderingType, Duration)","u":"setPayloadAsync(java.lang.String,java.util.Map,io.qdrant.client.grpc.Common.PointId,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"setPayloadAsync(String, Map, List, Boolean, Points.WriteOrderingType, Duration)","u":"setPayloadAsync(java.lang.String,java.util.Map,java.util.List,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"setPayloadAsync(String, Map, Points.PointsSelector, Boolean, Points.WriteOrderingType, Duration)","u":"setPayloadAsync(java.lang.String,java.util.Map,io.qdrant.client.grpc.Points.PointsSelector,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"setPayloadAsync(String, Map, Points.PointsSelector, Boolean, String, Points.WriteOrderingType, Duration)","u":"setPayloadAsync(java.lang.String,java.util.Map,io.qdrant.client.grpc.Points.PointsSelector,java.lang.Boolean,java.lang.String,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"ShardKeyFactory","l":"shardKey(long)"},{"p":"io.qdrant.client","c":"ShardKeyFactory","l":"shardKey(String)","u":"shardKey(java.lang.String)"},{"p":"io.qdrant.client","c":"ShardKeySelectorFactory","l":"shardKeySelector(Collections.ShardKey...)","u":"shardKeySelector(io.qdrant.client.grpc.Collections.ShardKey...)"},{"p":"io.qdrant.client","c":"ShardKeySelectorFactory","l":"shardKeySelector(long...)"},{"p":"io.qdrant.client","c":"ShardKeySelectorFactory","l":"shardKeySelector(String...)","u":"shardKeySelector(java.lang.String...)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient","l":"snapshots()"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"sqrt(Points.Expression)","u":"sqrt(io.qdrant.client.grpc.Points.Expression)"},{"p":"io.qdrant.client","c":"StartFromFactory","l":"startFrom(float)"},{"p":"io.qdrant.client","c":"StartFromFactory","l":"startFrom(Instant)","u":"startFrom(java.time.Instant)"},{"p":"io.qdrant.client","c":"StartFromFactory","l":"startFrom(int)"},{"p":"io.qdrant.client","c":"StartFromFactory","l":"startFrom(String)","u":"startFrom(java.lang.String)"},{"p":"io.qdrant.client","c":"StartFromFactory","l":"startFrom(Timestamp)","u":"startFrom(com.google.protobuf.Timestamp)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"sum(Points.SumExpression)","u":"sum(io.qdrant.client.grpc.Points.SumExpression)"},{"p":"io.qdrant.client","c":"TargetVectorFactory","l":"targetVector(Common.PointId)","u":"targetVector(io.qdrant.client.grpc.Common.PointId)"},{"p":"io.qdrant.client","c":"TargetVectorFactory","l":"targetVector(Points.Vector)","u":"targetVector(io.qdrant.client.grpc.Points.Vector)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"updateAliasesAsync(List)","u":"updateAliasesAsync(java.util.List)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"updateAliasesAsync(List, Duration)","u":"updateAliasesAsync(java.util.List,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"updateCollectionAsync(Collections.UpdateCollection)","u":"updateCollectionAsync(io.qdrant.client.grpc.Collections.UpdateCollection)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"updateCollectionAsync(Collections.UpdateCollection, Duration)","u":"updateCollectionAsync(io.qdrant.client.grpc.Collections.UpdateCollection,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"updateCollectionClusterSetupAsync(Collections.UpdateCollectionClusterSetupRequest)","u":"updateCollectionClusterSetupAsync(io.qdrant.client.grpc.Collections.UpdateCollectionClusterSetupRequest)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"updateCollectionClusterSetupAsync(Collections.UpdateCollectionClusterSetupRequest, Duration)","u":"updateCollectionClusterSetupAsync(io.qdrant.client.grpc.Collections.UpdateCollectionClusterSetupRequest,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"updateVectorsAsync(Points.UpdatePointVectors)","u":"updateVectorsAsync(io.qdrant.client.grpc.Points.UpdatePointVectors)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"updateVectorsAsync(Points.UpdatePointVectors, Duration)","u":"updateVectorsAsync(io.qdrant.client.grpc.Points.UpdatePointVectors,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"updateVectorsAsync(String, List)","u":"updateVectorsAsync(java.lang.String,java.util.List)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"updateVectorsAsync(String, List, Boolean, Points.WriteOrderingType, Duration)","u":"updateVectorsAsync(java.lang.String,java.util.List,java.lang.Boolean,io.qdrant.client.grpc.Points.WriteOrderingType,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"updateVectorsAsync(String, List, Duration)","u":"updateVectorsAsync(java.lang.String,java.util.List,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"upsertAsync(Points.UpsertPoints)","u":"upsertAsync(io.qdrant.client.grpc.Points.UpsertPoints)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"upsertAsync(Points.UpsertPoints, Duration)","u":"upsertAsync(io.qdrant.client.grpc.Points.UpsertPoints,java.time.Duration)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"upsertAsync(String, List)","u":"upsertAsync(java.lang.String,java.util.List)"},{"p":"io.qdrant.client","c":"QdrantClient","l":"upsertAsync(String, List, Duration)","u":"upsertAsync(java.lang.String,java.util.List,java.time.Duration)"},{"p":"io.qdrant.client","c":"ValueFactory","l":"value(boolean)"},{"p":"io.qdrant.client","c":"ValueFactory","l":"value(double)"},{"p":"io.qdrant.client","c":"ValueFactory","l":"value(List)","u":"value(java.util.List)"},{"p":"io.qdrant.client","c":"ValueFactory","l":"value(long)"},{"p":"io.qdrant.client","c":"ValueFactory","l":"value(Map)","u":"value(java.util.Map)"},{"p":"io.qdrant.client","c":"ValueFactory","l":"value(String)","u":"value(java.lang.String)"},{"p":"io.qdrant.client","c":"ConditionFactory","l":"valuesCount(String, Common.ValuesCount)","u":"valuesCount(java.lang.String,io.qdrant.client.grpc.Common.ValuesCount)"},{"p":"io.qdrant.client","c":"ExpressionFactory","l":"variable(String)","u":"variable(java.lang.String)"},{"p":"io.qdrant.client","c":"VectorFactory","l":"vector(float...)"},{"p":"io.qdrant.client","c":"VectorFactory","l":"vector(List)","u":"vector(java.util.List)"},{"p":"io.qdrant.client","c":"VectorFactory","l":"vector(List, List)","u":"vector(java.util.List,java.util.List)"},{"p":"io.qdrant.client","c":"VectorFactory","l":"vector(Points.Document)","u":"vector(io.qdrant.client.grpc.Points.Document)"},{"p":"io.qdrant.client","c":"VectorFactory","l":"vector(Points.Image)","u":"vector(io.qdrant.client.grpc.Points.Image)"},{"p":"io.qdrant.client","c":"VectorFactory","l":"vector(Points.InferenceObject)","u":"vector(io.qdrant.client.grpc.Points.InferenceObject)"},{"p":"io.qdrant.client","c":"VectorInputFactory","l":"vectorInput(Common.PointId)","u":"vectorInput(io.qdrant.client.grpc.Common.PointId)"},{"p":"io.qdrant.client","c":"VectorInputFactory","l":"vectorInput(float...)"},{"p":"io.qdrant.client","c":"VectorInputFactory","l":"vectorInput(List)","u":"vectorInput(java.util.List)"},{"p":"io.qdrant.client","c":"VectorInputFactory","l":"vectorInput(List, List)","u":"vectorInput(java.util.List,java.util.List)"},{"p":"io.qdrant.client","c":"VectorInputFactory","l":"vectorInput(long)"},{"p":"io.qdrant.client","c":"VectorInputFactory","l":"vectorInput(Points.Document)","u":"vectorInput(io.qdrant.client.grpc.Points.Document)"},{"p":"io.qdrant.client","c":"VectorInputFactory","l":"vectorInput(Points.Image)","u":"vectorInput(io.qdrant.client.grpc.Points.Image)"},{"p":"io.qdrant.client","c":"VectorInputFactory","l":"vectorInput(Points.InferenceObject)","u":"vectorInput(io.qdrant.client.grpc.Points.InferenceObject)"},{"p":"io.qdrant.client","c":"VectorInputFactory","l":"vectorInput(UUID)","u":"vectorInput(java.util.UUID)"},{"p":"io.qdrant.client","c":"VectorsFactory","l":"vectors(float...)"},{"p":"io.qdrant.client","c":"VectorsFactory","l":"vectors(List)","u":"vectors(java.util.List)"},{"p":"io.qdrant.client","c":"VectorsFactory","l":"vectors(Points.Document)","u":"vectors(io.qdrant.client.grpc.Points.Document)"},{"p":"io.qdrant.client","c":"VectorsFactory","l":"vectors(Points.Image)","u":"vectors(io.qdrant.client.grpc.Points.Image)"},{"p":"io.qdrant.client","c":"VectorsFactory","l":"vectors(Points.InferenceObject)","u":"vectors(io.qdrant.client.grpc.Points.InferenceObject)"},{"p":"io.qdrant.client","c":"VectorsFactory","l":"vectors(Points.Vector)","u":"vectors(io.qdrant.client.grpc.Points.Vector)"},{"p":"io.qdrant.client","c":"VersionsCompatibilityChecker","l":"VersionsCompatibilityChecker()","u":"%3Cinit%3E()"},{"p":"io.qdrant.client","c":"QdrantGrpcClient.Builder","l":"withApiKey(String)","u":"withApiKey(java.lang.String)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient.Builder","l":"withCallCredentials(CallCredentials)","u":"withCallCredentials(io.grpc.CallCredentials)"},{"p":"io.qdrant.client","c":"RequestHeaders","l":"withHeader(Context, String, String)","u":"withHeader(io.grpc.Context,java.lang.String,java.lang.String)"},{"p":"io.qdrant.client","c":"RequestHeaders","l":"withHeaders(Context, Map)","u":"withHeaders(io.grpc.Context,java.util.Map)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient.Builder","l":"withHeaders(Map)","u":"withHeaders(java.util.Map)"},{"p":"io.qdrant.client","c":"QdrantGrpcClient.Builder","l":"withTimeout(Duration)","u":"withTimeout(java.time.Duration)"}];updateSearchResults(); \ No newline at end of file diff --git a/module-search-index.js b/module-search-index.js new file mode 100644 index 00000000..0d59754f --- /dev/null +++ b/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/overview-tree.html b/overview-tree.html new file mode 100644 index 00000000..b09977df --- /dev/null +++ b/overview-tree.html @@ -0,0 +1,106 @@ + + + + +Class Hierarchy (client 1.18.1 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For All Packages

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+
+
+ + diff --git a/package-search-index.js b/package-search-index.js new file mode 100644 index 00000000..b4718aad --- /dev/null +++ b/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"io.qdrant.client"}];updateSearchResults(); \ No newline at end of file diff --git a/resources/glass.png b/resources/glass.png new file mode 100644 index 00000000..a7f591f4 Binary files /dev/null and b/resources/glass.png differ diff --git a/resources/java-logo-small.svg b/resources/java-logo-small.svg deleted file mode 100644 index 1af6b37c..00000000 --- a/resources/java-logo-small.svg +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - diff --git a/resources/java-logo.svg b/resources/java-logo.svg deleted file mode 100644 index 1e846d4c..00000000 --- a/resources/java-logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/resources/x.png b/resources/x.png new file mode 100644 index 00000000..30548a75 Binary files /dev/null and b/resources/x.png differ diff --git a/script-dir/jquery-3.7.1.min.js b/script-dir/jquery-3.7.1.min.js new file mode 100644 index 00000000..7f37b5d9 --- /dev/null +++ b/script-dir/jquery-3.7.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0{"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(x){x.ui=x.ui||{};x.ui.version="1.14.1";var n,s,C,k,o,l,a,r,u,i,h=0,c=Array.prototype.hasOwnProperty,d=Array.prototype.slice;x.cleanData=(n=x.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");n(t)}),x.widget=function(t,i,e){var s,n,o,l,a={},r=t.split(".")[0];return"__proto__"===(t=t.split(".")[1])||"constructor"===t?x.error("Invalid widget name: "+t):(l=r+"-"+t,e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[l.toLowerCase()]=function(t){return!!x.data(t,l)},x[r]=x[r]||{},s=x[r][t],n=x[r][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},x.extend(n,s,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new i).options=x.widget.extend({},o.options),x.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}a[e]="function"!=typeof s?s:function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}}),n.prototype=x.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:l}),s?(x.each(s._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),x.widget.bridge(t,n),n)},x.widget.extend=function(t){for(var e,i,s=d.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n{var i=[];n.element.each(function(t,e){x.map(l.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),l._on(x(i),{remove:"_untrackClassesElement"})})(),x(x.uniqueSort(i.get().concat(n.element.get())))):x(i.not(n.element).get()),l.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=x.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;x.each(s.classesElementLookup,function(t,e){-1!==x.inArray(i.target,e)&&(s.classesElementLookup[t]=x(e.not(i.target).get()))}),this._off(x(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,e={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return e.element.toggleClass(this._classes(e),s),this},_on:function(n,o,t){var l,a=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=l=x(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,l=this.widget()),x.each(t,function(t,e){function i(){if(n||!0!==a.options.disabled&&!x(this).hasClass("ui-state-disabled"))return("string"==typeof e?a[e]:e).apply(a,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||x.guid++);var t=t.match(/^([\w:-]*)\s*(.*)$/),s=t[1]+a.eventNamespace,t=t[2];t?l.on(s,t,i):o.on(s,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=x(this.bindings.not(t).get()),this.focusable=x(this.focusable.not(t).get()),this.hoverable=x(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(x(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(x(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=x.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},x.each({show:"fadeIn",hide:"fadeOut"},function(o,l){x.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||l:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!x.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&x.effects&&x.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){x(this)[o](),i&&i.call(e[0]),t()})}}),x.widget;function E(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function T(t,e){return parseInt(x.css(t,e),10)||0}function W(t){return null!=t&&t===t.window}C=Math.max,k=Math.abs,o=/left|center|right/,l=/top|center|bottom/,a=/[\+\-]\d+(\.[\d]+)?%?/,r=/^\w+/,u=/%$/,i=x.fn.position,x.position={scrollbarWidth:function(){var t,e,i;return void 0!==s?s:(i=(e=x("
")).children()[0],x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(k(s),k(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})):i.apply(this,arguments)},x.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,s=s.width,o=t.left-e.collisionPosition.marginLeft,l=n-o,a=o+e.collisionWidth-s-n;s",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(this.document[0].activeElement);!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active)&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]!==i[0])||i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),t=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(t,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),e=(i=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(e,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(e=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-e-i,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&"true"===this.element.prop("contentEditable"),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)i=!1,this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault();else if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){n?(n=!1,t.preventDefault()):this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("
    ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent)&&/^mouse/.test(t.originalEvent.type)?(this.menu.blur(),this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)})):(s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("
    ").text(i))},100)))},menuselect:function(t,e){var e=e.item.data("ui-autocomplete-item"),i=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.trigger("focus"),this.previous=i),!1!==this._trigger("select",t,{item:e})&&this._value(e.value),this.term=this._value(),this.close(t),this.selectedItem=e}}),this.liveRegion=x("
    ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=(t=(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))&&t[0]?t:this.element.closest(".ui-front, dialog")).length?t:this.document[0].body},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("
    ").text(e.label)).appendTo(t)},_move:function(t,e){this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur()):this.menu[t](e):this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}}),x.ui.autocomplete}); \ No newline at end of file diff --git a/script.js b/script.js new file mode 100644 index 00000000..73cd8faa --- /dev/null +++ b/script.js @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor); + elem.classList.add(isEvenRow ? evenRowColor : oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.getElementById(tableId + '.tabpanel') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} + +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + contentDiv.addEventListener("scroll", function(e) { + var timeoutID; + if (!timeoutID) { + timeoutID = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + timeoutID = null; + }, 100); + } + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/search.js b/search.js new file mode 100644 index 00000000..db3b2f4a --- /dev/null +++ b/search.js @@ -0,0 +1,354 @@ +/* + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var noResult = {l: "No results found"}; +var loading = {l: "Loading search index..."}; +var catModules = "Modules"; +var catPackages = "Packages"; +var catTypes = "Classes and Interfaces"; +var catMembers = "Members"; +var catSearchTags = "Search Tags"; +var highlight = "$&"; +var searchPattern = ""; +var fallbackPattern = ""; +var RANKING_THRESHOLD = 2; +var NO_MATCH = 0xffff; +var MIN_RESULTS = 3; +var MAX_RESULTS = 500; +var UNNAMED = ""; +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(item, matcher, fallbackMatcher) { + var escapedItem = escapeHtml(item); + var highlighted = escapedItem.replace(matcher, highlight); + if (highlighted === escapedItem) { + highlighted = escapedItem.replace(fallbackMatcher, highlight) + } + return highlighted; +} +function getURLPrefix(ui) { + var urlPrefix=""; + var slash = "/"; + if (ui.item.category === catModules) { + return ui.item.l + slash; + } else if (ui.item.category === catPackages && ui.item.m) { + return ui.item.m + slash; + } else if (ui.item.category === catTypes || ui.item.category === catMembers) { + if (ui.item.m) { + urlPrefix = ui.item.m + slash; + } else { + $.each(packageSearchIndex, function(index, item) { + if (item.m && ui.item.p === item.l) { + urlPrefix = item.m + slash; + } + }); + } + } + return urlPrefix; +} +function createSearchPattern(term) { + var pattern = ""; + var isWordToken = false; + term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { + if (index > 0) { + // whitespace between identifiers is significant + pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; + } + var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + if (s === "") { + continue; + } + pattern += $.ui.autocomplete.escapeRegex(s); + isWordToken = /\w$/.test(s); + if (isWordToken) { + pattern += "([a-z0-9_$<>\\[\\]]*?)"; + } + } + }); + return pattern; +} +function createMatcher(pattern, flags) { + var isCamelCase = /[A-Z]/.test(pattern); + return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +} +var watermark = 'Search'; +$(function() { + var search = $("#search-input"); + var reset = $("#reset-button"); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + search.val(watermark).addClass('watermark'); + search.blur(function() { + if ($(this).val().length === 0) { + $(this).val(watermark).addClass('watermark'); + } + }); + search.on('click keydown paste', function() { + if ($(this).val() === watermark) { + $(this).val('').removeClass('watermark'); + } + }); + reset.click(function() { + search.val('').focus(); + }); + search.focus()[0].setSelectionRange(0, 0); +}); +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + }, + _renderMenu: function(ul, items) { + var rMenu = this; + var currentCategory = ""; + rMenu.menu.bindings = $(); + $.each(items, function(index, item) { + var li; + if (item.category && item.category !== currentCategory) { + ul.append("
  • " + item.category + "
  • "); + currentCategory = item.category; + } + li = rMenu._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", item.category + " : " + item.l); + li.attr("class", "result-item"); + } else { + li.attr("aria-label", item.l); + li.attr("class", "result-item"); + } + }); + }, + _renderItem: function(ul, item) { + var label = ""; + var matcher = createMatcher(escapeHtml(searchPattern), "g"); + var fallbackMatcher = new RegExp(fallbackPattern, "gi") + if (item.category === catModules) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catPackages) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catTypes) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher) + : getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catMembers) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher) + : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher); + } else if (item.category === catSearchTags) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else { + label = item.l; + } + var li = $("
  • ").appendTo(ul); + var div = $("
    ").appendTo(li); + if (item.category === catSearchTags && item.h) { + if (item.d) { + div.html(label + " (" + item.h + ")
    " + + item.d + "
    "); + } else { + div.html(label + " (" + item.h + ")"); + } + } else { + if (item.m) { + div.html(item.m + "/" + label); + } else { + div.html(label); + } + } + return li; + } +}); +function rankMatch(match, category) { + if (!match) { + return NO_MATCH; + } + var index = match.index; + var input = match.input; + var leftBoundaryMatch = 2; + var periferalMatch = 0; + // make sure match is anchored on a left word boundary + if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) { + leftBoundaryMatch = 0; + } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) { + leftBoundaryMatch = 1; + } + var matchEnd = index + match[0].length; + var leftParen = input.indexOf("("); + var endOfName = leftParen > -1 ? leftParen : input.length; + // exclude peripheral matches + if (category !== catModules && category !== catSearchTags) { + var delim = category === catPackages ? "/" : "."; + if (leftParen > -1 && leftParen < index) { + periferalMatch += 2; + } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { + periferalMatch += 2; + } + } + var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match + for (var i = 1; i < match.length; i++) { + // lower ranking if parts of the name are missing + if (match[i]) + delta += match[i].length; + } + if (category === catTypes) { + // lower ranking if a type name contains unmatched camel-case parts + if (/[A-Z]/.test(input.substring(matchEnd))) + delta += 5; + if (/[A-Z]/.test(input.substring(0, index))) + delta += 5; + } + return leftBoundaryMatch + periferalMatch + (delta / 200); + +} +function doSearch(request, response) { + var result = []; + searchPattern = createSearchPattern(request.term); + fallbackPattern = createSearchPattern(request.term.toLowerCase()); + if (searchPattern === "") { + return this.close(); + } + var camelCaseMatcher = createMatcher(searchPattern, ""); + var fallbackMatcher = new RegExp(fallbackPattern, "i"); + + function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) { + if (indexArray) { + var newResults = []; + $.each(indexArray, function (i, item) { + item.category = category; + var ranking = rankMatch(matcher.exec(nameFunc(item)), category); + if (ranking < RANKING_THRESHOLD) { + newResults.push({ranking: ranking, item: item}); + } + return newResults.length <= MAX_RESULTS; + }); + return newResults.sort(function(e1, e2) { + return e1.ranking - e2.ranking; + }).map(function(e) { + return e.item; + }); + } + return []; + } + function searchIndex(indexArray, category, nameFunc) { + var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc); + result = result.concat(primaryResults); + if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) { + var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc); + result = result.concat(secondaryResults.filter(function (item) { + return primaryResults.indexOf(item) === -1; + })); + } + } + + searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; }); + searchIndex(packageSearchIndex, catPackages, function(item) { + return (item.m && request.term.indexOf("/") > -1) + ? (item.m + "/" + item.l) : item.l; + }); + searchIndex(typeSearchIndex, catTypes, function(item) { + return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l; + }); + searchIndex(memberSearchIndex, catMembers, function(item) { + return request.term.indexOf(".") > -1 + ? item.p + "." + item.c + "." + item.l : item.l; + }); + searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; }); + + if (!indexFilesLoaded()) { + updateSearchResults = function() { + doSearch(request, response); + } + result.unshift(loading); + } else { + updateSearchResults = function() {}; + } + response(result); +} +$(function() { + $("#search-input").catcomplete({ + minLength: 1, + delay: 300, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push(noResult); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.category) { + var url = getURLPrefix(ui); + if (ui.item.category === catModules) { + url += "module-summary.html"; + } else if (ui.item.category === catPackages) { + if (ui.item.u) { + url = ui.item.u; + } else { + url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (ui.item.category === catTypes) { + if (ui.item.u) { + url = ui.item.u; + } else if (ui.item.p === UNNAMED) { + url += ui.item.l + ".html"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; + } + } else if (ui.item.category === catMembers) { + if (ui.item.p === UNNAMED) { + url += ui.item.c + ".html" + "#"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; + } + if (ui.item.u) { + url += ui.item.u; + } else { + url += ui.item.l; + } + } else if (ui.item.category === catSearchTags) { + url += ui.item.u; + } + if (top !== window) { + parent.classFrame.location = pathtoroot + url; + } else { + window.location.href = pathtoroot + url; + } + $("#search-input").focus(); + } + } + }); +}); diff --git a/serialized-form.html b/serialized-form.html new file mode 100644 index 00000000..bd338fbe --- /dev/null +++ b/serialized-form.html @@ -0,0 +1,70 @@ + + + + +Serialized Form (client 1.18.1 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Serialized Form

    +
    + +
    +
    +
    + + diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index dd1a777f..00000000 --- a/settings.gradle +++ /dev/null @@ -1,2 +0,0 @@ -rootProject.name = 'client' - diff --git a/src/main/java/io/qdrant/client/ConditionFactory.java b/src/main/java/io/qdrant/client/ConditionFactory.java deleted file mode 100644 index d9a04bfa..00000000 --- a/src/main/java/io/qdrant/client/ConditionFactory.java +++ /dev/null @@ -1,441 +0,0 @@ -package io.qdrant.client; - -import io.qdrant.client.grpc.Common.Condition; -import io.qdrant.client.grpc.Common.DatetimeRange; -import io.qdrant.client.grpc.Common.FieldCondition; -import io.qdrant.client.grpc.Common.Filter; -import io.qdrant.client.grpc.Common.GeoBoundingBox; -import io.qdrant.client.grpc.Common.GeoLineString; -import io.qdrant.client.grpc.Common.GeoPoint; -import io.qdrant.client.grpc.Common.GeoPolygon; -import io.qdrant.client.grpc.Common.GeoRadius; -import io.qdrant.client.grpc.Common.HasIdCondition; -import io.qdrant.client.grpc.Common.HasVectorCondition; -import io.qdrant.client.grpc.Common.IsEmptyCondition; -import io.qdrant.client.grpc.Common.IsNullCondition; -import io.qdrant.client.grpc.Common.Match; -import io.qdrant.client.grpc.Common.NestedCondition; -import io.qdrant.client.grpc.Common.PointId; -import io.qdrant.client.grpc.Common.Range; -import io.qdrant.client.grpc.Common.RepeatedIntegers; -import io.qdrant.client.grpc.Common.RepeatedStrings; -import io.qdrant.client.grpc.Common.ValuesCount; -import java.util.List; - -/** Convenience methods for constructing {@link Condition} */ -public final class ConditionFactory { - private ConditionFactory() {} - - /** - * Match all records with the provided id - * - * @param id The id to match - * @return a new instance of {@link Condition} - */ - public static Condition hasId(PointId id) { - return Condition.newBuilder() - .setHasId(HasIdCondition.newBuilder().addHasId(id).build()) - .build(); - } - - /** - * Match all records with the provided ids - * - * @param ids The ids to match - * @return a new instance of {@link Condition} - */ - public static Condition hasId(List ids) { - return Condition.newBuilder() - .setHasId(HasIdCondition.newBuilder().addAllHasId(ids).build()) - .build(); - } - - /** - * Match all records where the given field either does not exist, or has null or empty value. - * - * @param field The name of the field - * @return a new instance of {@link Condition} - */ - public static Condition isEmpty(String field) { - return Condition.newBuilder() - .setIsEmpty(IsEmptyCondition.newBuilder().setKey(field).build()) - .build(); - } - - /** - * Match all records where the given field is null. - * - * @param field The name of the field - * @return a new instance of {@link Condition} - */ - public static Condition isNull(String field) { - return Condition.newBuilder() - .setIsNull(IsNullCondition.newBuilder().setKey(field).build()) - .build(); - } - - /** - * Match records where the given field matches the given keyword - * - * @param field The name of the field - * @param keyword The keyword to match - * @return a new instance of {@link Condition} - */ - public static Condition matchKeyword(String field, String keyword) { - return Condition.newBuilder() - .setField( - FieldCondition.newBuilder() - .setKey(field) - .setMatch(Match.newBuilder().setKeyword(keyword).build()) - .build()) - .build(); - } - - /** - * Match records where the given field matches the given text. - * - * @param field The name of the field - * @param text The text to match - * @return a new instance of {@link Condition} - */ - public static Condition matchText(String field, String text) { - return Condition.newBuilder() - .setField( - FieldCondition.newBuilder() - .setKey(field) - .setMatch(Match.newBuilder().setText(text).build()) - .build()) - .build(); - } - - /** - * Match records where the given field matches the given phrase. - * - * @param field The name of the field - * @param phrase The phrase to match - * @return a new instance of {@link Condition} - */ - public static Condition matchPhrase(String field, String phrase) { - return Condition.newBuilder() - .setField( - FieldCondition.newBuilder() - .setKey(field) - .setMatch(Match.newBuilder().setPhrase(phrase).build()) - .build()) - .build(); - } - - /** - * Match records where the given field matches any word in the text. - * - * @param field The name of the field - * @param textAny The text to match - * @return a new instance of {@link Condition} - */ - public static Condition matchTextAny(String field, String textAny) { - return Condition.newBuilder() - .setField( - FieldCondition.newBuilder() - .setKey(field) - .setMatch(Match.newBuilder().setTextAny(textAny).build()) - .build()) - .build(); - } - - /** - * Match records where the given field matches the given boolean value. - * - * @param field The name of the field - * @param value The value to match - * @return a new instance of {@link Condition} - */ - public static Condition match(String field, boolean value) { - return Condition.newBuilder() - .setField( - FieldCondition.newBuilder() - .setKey(field) - .setMatch(Match.newBuilder().setBoolean(value).build()) - .build()) - .build(); - } - - /** - * Match records where the given field matches the given long value. - * - * @param field The name of the field - * @param value The value to match - * @return a new instance of {@link Condition} - */ - public static Condition match(String field, long value) { - return Condition.newBuilder() - .setField( - FieldCondition.newBuilder() - .setKey(field) - .setMatch(Match.newBuilder().setInteger(value).build()) - .build()) - .build(); - } - - /** - * Match records where the given field matches any of the given keywords. - * - * @param field The name of the field - * @param keywords The keywords to match - * @return a new instance of {@link Condition} - */ - public static Condition matchKeywords(String field, List keywords) { - return Condition.newBuilder() - .setField( - FieldCondition.newBuilder() - .setKey(field) - .setMatch( - Match.newBuilder() - .setKeywords(RepeatedStrings.newBuilder().addAllStrings(keywords).build()) - .build()) - .build()) - .build(); - } - - /** - * Match records where the given field matches any of the given values. - * - * @param field The name of the field - * @param values The values to match - * @return a new instance of {@link Condition} - */ - public static Condition matchValues(String field, List values) { - return Condition.newBuilder() - .setField( - FieldCondition.newBuilder() - .setKey(field) - .setMatch( - Match.newBuilder() - .setIntegers(RepeatedIntegers.newBuilder().addAllIntegers(values).build()) - .build()) - .build()) - .build(); - } - - /** - * Match records where the given field does not match any of the given keywords. - * - * @param field The name of the field - * @param keywords The keywords not to match - * @return a new instance of {@link Condition} - */ - public static Condition matchExceptKeywords(String field, List keywords) { - return Condition.newBuilder() - .setField( - FieldCondition.newBuilder() - .setKey(field) - .setMatch( - Match.newBuilder() - .setExceptKeywords( - RepeatedStrings.newBuilder().addAllStrings(keywords).build()) - .build()) - .build()) - .build(); - } - - /** - * Match records where the given field does not match any of the given values. - * - * @param field The name of the field - * @param values The values not to match - * @return a new instance of {@link Condition} - */ - public static Condition matchExceptValues(String field, List values) { - return Condition.newBuilder() - .setField( - FieldCondition.newBuilder() - .setKey(field) - .setMatch( - Match.newBuilder() - .setExceptIntegers( - RepeatedIntegers.newBuilder().addAllIntegers(values).build()) - .build()) - .build()) - .build(); - } - - /** - * Match records where the given nested field matches the given condition. - * - * @param field The name of the nested field. - * @param condition The condition to match. - * @return a new instance of {@link Condition} - */ - public static Condition nested(String field, Condition condition) { - return Condition.newBuilder() - .setNested( - NestedCondition.newBuilder() - .setKey(field) - .setFilter(Filter.newBuilder().addMust(condition).build()) - .build()) - .build(); - } - - /** - * Match records where the given nested field matches the given filter. - * - * @param field The name of the nested field. - * @param filter The filter to match. - * @return a new instance of {@link Condition} - */ - public static Condition nested(String field, Filter filter) { - return Condition.newBuilder() - .setNested(NestedCondition.newBuilder().setKey(field).setFilter(filter)) - .build(); - } - - /** - * Match records where the given field matches the given range. - * - * @param field The name of the nested field. - * @param range The range to match. - * @return a new instance of {@link Condition} - */ - public static Condition range(String field, Range range) { - return Condition.newBuilder() - .setField(FieldCondition.newBuilder().setKey(field).setRange(range).build()) - .build(); - } - - /** - * Match records where the given field has values inside a circle centred at a given latitude and - * longitude with a given radius. - * - * @param field The name of the field. - * @param latitude The latitude of the center. - * @param longitude The longitude of the center. - * @param radius The radius in meters. - * @return a new instance of {@link Condition} - */ - public static Condition geoRadius(String field, double latitude, double longitude, float radius) { - return Condition.newBuilder() - .setField( - FieldCondition.newBuilder() - .setKey(field) - .setGeoRadius( - GeoRadius.newBuilder() - .setCenter(GeoPoint.newBuilder().setLat(latitude).setLon(longitude).build()) - .setRadius(radius) - .build()) - .build()) - .build(); - } - - /** - * Match records where the given field has values inside a bounding box specified by the top left - * and bottom right coordinates. - * - * @param field The name of the field. - * @param topLeftLatitude The latitude of the top left point. - * @param topLeftLongitude The longitude of the top left point. - * @param bottomRightLatitude The latitude of the bottom right point. - * @param bottomRightLongitude The longitude of the bottom right point. - * @return a new instance of {@link Condition} - */ - public static Condition geoBoundingBox( - String field, - double topLeftLatitude, - double topLeftLongitude, - double bottomRightLatitude, - double bottomRightLongitude) { - return Condition.newBuilder() - .setField( - FieldCondition.newBuilder() - .setKey(field) - .setGeoBoundingBox( - GeoBoundingBox.newBuilder() - .setTopLeft( - GeoPoint.newBuilder() - .setLat(topLeftLatitude) - .setLon(topLeftLongitude) - .build()) - .setBottomRight( - GeoPoint.newBuilder() - .setLat(bottomRightLatitude) - .setLon(bottomRightLongitude) - .build()) - .build()) - .build()) - .build(); - } - - /** - * Matches records where the given field has values inside the provided polygon. A polygon always - * has an exterior ring and may optionally have interior rings, which represent independent areas - * or holes. When defining a ring, you must pick either a clockwise or counterclockwise ordering - * for your points. The first and last point of the polygon must be the same. - * - * @param field The name of the field. - * @param exterior The exterior ring of the polygon. - * @param interiors The interior rings of the polygon. - * @return a new instance of {@link Condition} - */ - public static Condition geoPolygon( - String field, GeoLineString exterior, List interiors) { - GeoPolygon.Builder geoPolygonBuilder = GeoPolygon.newBuilder().setExterior(exterior); - - if (!interiors.isEmpty()) { - geoPolygonBuilder.addAllInteriors(interiors); - } - - return Condition.newBuilder() - .setField( - FieldCondition.newBuilder() - .setKey(field) - .setGeoPolygon(geoPolygonBuilder.build()) - .build()) - .build(); - } - - /** - * Matches records where the given field has a count of values within the specified count range - * - * @param field The name of the field. - * @param valuesCount The count range to match. - * @return a new instance of {@link Condition} - */ - public static Condition valuesCount(String field, ValuesCount valuesCount) { - return Condition.newBuilder() - .setField(FieldCondition.newBuilder().setKey(field).setValuesCount(valuesCount).build()) - .build(); - } - - /** - * Nests a filter - * - * @param filter The filter to nest. - * @return a new instance of {@link Condition} - */ - public static Condition filter(Filter filter) { - return Condition.newBuilder().setFilter(filter).build(); - } - - /** - * Matches records where the given field has a datetime value within the specified range - * - * @param field The name of the field. - * @param datetimeRange The datetime range to match. - * @return a new instance of {@link Condition} - */ - public static Condition datetimeRange(String field, DatetimeRange datetimeRange) { - return Condition.newBuilder() - .setField(FieldCondition.newBuilder().setKey(field).setDatetimeRange(datetimeRange).build()) - .build(); - } - - /** - * Matches records where a value for the given vector is present. - * - * @param vector The name of the vector. - * @return a new instance of {@link Condition} - */ - public static Condition hasVector(String vector) { - return Condition.newBuilder() - .setHasVector(HasVectorCondition.newBuilder().setHasVector(vector).build()) - .build(); - } -} diff --git a/src/main/java/io/qdrant/client/ExpressionFactory.java b/src/main/java/io/qdrant/client/ExpressionFactory.java deleted file mode 100644 index 604ab2cb..00000000 --- a/src/main/java/io/qdrant/client/ExpressionFactory.java +++ /dev/null @@ -1,205 +0,0 @@ -package io.qdrant.client; - -import io.qdrant.client.grpc.Common.Condition; -import io.qdrant.client.grpc.Points.DecayParamsExpression; -import io.qdrant.client.grpc.Points.DivExpression; -import io.qdrant.client.grpc.Points.Expression; -import io.qdrant.client.grpc.Points.GeoDistance; -import io.qdrant.client.grpc.Points.MultExpression; -import io.qdrant.client.grpc.Points.PowExpression; -import io.qdrant.client.grpc.Points.SumExpression; - -/** Convenience methods for constructing {@link Expression} */ -public final class ExpressionFactory { - private ExpressionFactory() {} - - /** - * Creates an {@link Expression} from a constant. - * - * @param constant The constant float value - * @return a new instance of {@link Expression} - */ - public static Expression constant(float constant) { - return Expression.newBuilder().setConstant(constant).build(); - } - - /** - * Creates an {@link Expression} from a variable name. - * - * @param variable The variable name (e.g., payload key or score reference) - * @return a new instance of {@link Expression} - */ - public static Expression variable(String variable) { - return Expression.newBuilder().setVariable(variable).build(); - } - - /** - * Creates an {@link Expression} from a {@link Condition}. - * - * @param condition The condition to evaluate - * @return a new instance of {@link Expression} - */ - public static Expression condition(Condition condition) { - return Expression.newBuilder().setCondition(condition).build(); - } - - /** - * Creates an {@link Expression} from a {@link GeoDistance}. - * - * @param geoDistance The geo distance object - * @return a new instance of {@link Expression} - */ - public static Expression geoDistance(GeoDistance geoDistance) { - return Expression.newBuilder().setGeoDistance(geoDistance).build(); - } - - /** - * Creates an {@link Expression} from a date-time constant string. - * - * @param datetime The date-time string - * @return a new instance of {@link Expression} - */ - public static Expression datetime(String datetime) { - return Expression.newBuilder().setDatetime(datetime).build(); - } - - /** - * Creates an {@link Expression} from a payload key referencing date-time values. - * - * @param datetimeKey The payload key containing date-time values - * @return a new instance of {@link Expression} - */ - public static Expression datetimeKey(String datetimeKey) { - return Expression.newBuilder().setDatetimeKey(datetimeKey).build(); - } - - /** - * Creates an {@link Expression} that multiplies values. - * - * @param mult The multiplication expression - * @return a new instance of {@link Expression} - */ - public static Expression mult(MultExpression mult) { - return Expression.newBuilder().setMult(mult).build(); - } - - /** - * Creates an {@link Expression} that sums values. - * - * @param sum The summation expression - * @return a new instance of {@link Expression} - */ - public static Expression sum(SumExpression sum) { - return Expression.newBuilder().setSum(sum).build(); - } - - /** - * Creates an {@link Expression} that divides values. - * - * @param div The division expression - * @return a new instance of {@link Expression} - */ - public static Expression div(DivExpression div) { - return Expression.newBuilder().setDiv(div).build(); - } - - /** - * Creates a negated {@link Expression}. - * - * @param expr The expression to negate - * @return a new instance of {@link Expression} - */ - public static Expression negate(Expression expr) { - return Expression.newBuilder().setNeg(expr).build(); - } - - /** - * Creates an {@link Expression} representing absolute value. - * - * @param expr The expression to wrap with abs() - * @return a new instance of {@link Expression} - */ - public static Expression abs(Expression expr) { - return Expression.newBuilder().setAbs(expr).build(); - } - - /** - * Creates an {@link Expression} representing square root. - * - * @param expr The expression to apply sqrt() to - * @return a new instance of {@link Expression} - */ - public static Expression sqrt(Expression expr) { - return Expression.newBuilder().setSqrt(expr).build(); - } - - /** - * Creates an {@link Expression} from a {@link PowExpression}. - * - * @param pow The power expression (base and exponent) - * @return a new instance of {@link Expression} - */ - public static Expression pow(PowExpression pow) { - return Expression.newBuilder().setPow(pow).build(); - } - - /** - * Creates an {@link Expression} representing exponential. - * - * @param expr The expression to apply exponential to - * @return a new instance of {@link Expression} - */ - public static Expression exp(Expression expr) { - return Expression.newBuilder().setExp(expr).build(); - } - - /** - * Creates an {@link Expression} representing base-10 logarithm. - * - * @param expr The expression to apply log10() to - * @return a new instance of {@link Expression} - */ - public static Expression log10(Expression expr) { - return Expression.newBuilder().setLog10(expr).build(); - } - - /** - * Creates an {@link Expression} representing natural logarithm. - * - * @param expr The expression to apply natural log to - * @return a new instance of {@link Expression} - */ - public static Expression ln(Expression expr) { - return Expression.newBuilder().setLn(expr).build(); - } - - /** - * Creates an {@link Expression} representing exponential decay. - * - * @param decay The decay parameters - * @return a new instance of {@link Expression} - */ - public static Expression expDecay(DecayParamsExpression decay) { - return Expression.newBuilder().setExpDecay(decay).build(); - } - - /** - * Creates an {@link Expression} representing Gaussian decay. - * - * @param decay The decay parameters - * @return a new instance of {@link Expression} - */ - public static Expression gaussDecay(DecayParamsExpression decay) { - return Expression.newBuilder().setGaussDecay(decay).build(); - } - - /** - * Creates an {@link Expression} representing linear decay. - * - * @param decay The decay parameters - * @return a new instance of {@link Expression} - */ - public static Expression linDecay(DecayParamsExpression decay) { - return Expression.newBuilder().setLinDecay(decay).build(); - } -} diff --git a/src/main/java/io/qdrant/client/MetadataCredentials.java b/src/main/java/io/qdrant/client/MetadataCredentials.java deleted file mode 100644 index 2b1ca2f7..00000000 --- a/src/main/java/io/qdrant/client/MetadataCredentials.java +++ /dev/null @@ -1,48 +0,0 @@ -package io.qdrant.client; - -import io.grpc.CallCredentials; -import io.grpc.Metadata; -import io.grpc.Status; -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.Executor; -import javax.annotation.Nullable; - -/** Used internally by the client to send the API key and any headers as gRPC metadata. */ -public class MetadataCredentials extends CallCredentials { - @Nullable private final String apiKey; - private final Map headers; - - /** - * Instantiates a new instance of {@link MetadataCredentials} - * - * @param apiKey The API key to use for authentication. - * @param headers Custom headers to send with every request. - */ - public MetadataCredentials(@Nullable String apiKey, Map headers) { - this.apiKey = apiKey; - this.headers = headers != null ? headers : Collections.emptyMap(); - } - - @Override - public void applyRequestMetadata( - RequestInfo requestInfo, Executor appExecutor, MetadataApplier applier) { - appExecutor.execute( - () -> { - try { - Metadata metadata = new Metadata(); - if (apiKey != null) { - metadata.put(Metadata.Key.of("api-key", Metadata.ASCII_STRING_MARSHALLER), apiKey); - } - for (Map.Entry entry : headers.entrySet()) { - metadata.put( - Metadata.Key.of(entry.getKey(), Metadata.ASCII_STRING_MARSHALLER), - entry.getValue()); - } - applier.apply(metadata); - } catch (Throwable e) { - applier.fail(Status.INTERNAL.withCause(e)); - } - }); - } -} diff --git a/src/main/java/io/qdrant/client/PointIdFactory.java b/src/main/java/io/qdrant/client/PointIdFactory.java deleted file mode 100644 index 86a744d9..00000000 --- a/src/main/java/io/qdrant/client/PointIdFactory.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.qdrant.client; - -import io.qdrant.client.grpc.Common.PointId; -import java.util.UUID; - -/** Convenience methods for constructing {@link PointId} */ -public final class PointIdFactory { - private PointIdFactory() {} - - /** - * Creates a point id from a {@link long} - * - * @param id The id - * @return a new instance of {@link PointId} - */ - public static PointId id(long id) { - return PointId.newBuilder().setNum(id).build(); - } - - /** - * Creates a point id from a {@link UUID} - * - * @param id The id - * @return a new instance of {@link PointId} - */ - public static PointId id(UUID id) { - return PointId.newBuilder().setUuid(id.toString()).build(); - } -} diff --git a/src/main/java/io/qdrant/client/QdrantClient.java b/src/main/java/io/qdrant/client/QdrantClient.java deleted file mode 100644 index 7d59e4dd..00000000 --- a/src/main/java/io/qdrant/client/QdrantClient.java +++ /dev/null @@ -1,3295 +0,0 @@ -package io.qdrant.client; - -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; -import com.google.common.util.concurrent.MoreExecutors; -import io.qdrant.client.grpc.Collections.AliasDescription; -import io.qdrant.client.grpc.Collections.AliasOperations; -import io.qdrant.client.grpc.Collections.ChangeAliases; -import io.qdrant.client.grpc.Collections.CollectionClusterInfoRequest; -import io.qdrant.client.grpc.Collections.CollectionClusterInfoResponse; -import io.qdrant.client.grpc.Collections.CollectionDescription; -import io.qdrant.client.grpc.Collections.CollectionExistsRequest; -import io.qdrant.client.grpc.Collections.CollectionExistsResponse; -import io.qdrant.client.grpc.Collections.CollectionInfo; -import io.qdrant.client.grpc.Collections.CollectionOperationResponse; -import io.qdrant.client.grpc.Collections.CreateAlias; -import io.qdrant.client.grpc.Collections.CreateCollection; -import io.qdrant.client.grpc.Collections.CreateShardKeyRequest; -import io.qdrant.client.grpc.Collections.CreateShardKeyResponse; -import io.qdrant.client.grpc.Collections.DeleteAlias; -import io.qdrant.client.grpc.Collections.DeleteCollection; -import io.qdrant.client.grpc.Collections.DeleteShardKeyRequest; -import io.qdrant.client.grpc.Collections.DeleteShardKeyResponse; -import io.qdrant.client.grpc.Collections.GetCollectionInfoRequest; -import io.qdrant.client.grpc.Collections.GetCollectionInfoResponse; -import io.qdrant.client.grpc.Collections.ListAliasesRequest; -import io.qdrant.client.grpc.Collections.ListAliasesResponse; -import io.qdrant.client.grpc.Collections.ListCollectionAliasesRequest; -import io.qdrant.client.grpc.Collections.ListCollectionsRequest; -import io.qdrant.client.grpc.Collections.ListCollectionsResponse; -import io.qdrant.client.grpc.Collections.ListShardKeysRequest; -import io.qdrant.client.grpc.Collections.ListShardKeysResponse; -import io.qdrant.client.grpc.Collections.PayloadIndexParams; -import io.qdrant.client.grpc.Collections.PayloadSchemaType; -import io.qdrant.client.grpc.Collections.RenameAlias; -import io.qdrant.client.grpc.Collections.ShardKey; -import io.qdrant.client.grpc.Collections.ShardKeyDescription; -import io.qdrant.client.grpc.Collections.UpdateCollection; -import io.qdrant.client.grpc.Collections.UpdateCollectionClusterSetupRequest; -import io.qdrant.client.grpc.Collections.UpdateCollectionClusterSetupResponse; -import io.qdrant.client.grpc.Collections.VectorParams; -import io.qdrant.client.grpc.Collections.VectorParamsMap; -import io.qdrant.client.grpc.Collections.VectorsConfig; -import io.qdrant.client.grpc.CollectionsGrpc; -import io.qdrant.client.grpc.Common.Filter; -import io.qdrant.client.grpc.Common.PointId; -import io.qdrant.client.grpc.JsonWithInt.Value; -import io.qdrant.client.grpc.Points; -import io.qdrant.client.grpc.Points.BatchResult; -import io.qdrant.client.grpc.Points.ClearPayloadPoints; -import io.qdrant.client.grpc.Points.CountPoints; -import io.qdrant.client.grpc.Points.CountResponse; -import io.qdrant.client.grpc.Points.CreateFieldIndexCollection; -import io.qdrant.client.grpc.Points.CreateVectorNameRequest; -import io.qdrant.client.grpc.Points.DeleteFieldIndexCollection; -import io.qdrant.client.grpc.Points.DeletePayloadPoints; -import io.qdrant.client.grpc.Points.DeletePointVectors; -import io.qdrant.client.grpc.Points.DeletePoints; -import io.qdrant.client.grpc.Points.DeleteVectorNameRequest; -import io.qdrant.client.grpc.Points.DiscoverBatchPoints; -import io.qdrant.client.grpc.Points.DiscoverBatchResponse; -import io.qdrant.client.grpc.Points.DiscoverPoints; -import io.qdrant.client.grpc.Points.DiscoverResponse; -import io.qdrant.client.grpc.Points.FieldType; -import io.qdrant.client.grpc.Points.GetPoints; -import io.qdrant.client.grpc.Points.GetResponse; -import io.qdrant.client.grpc.Points.PointGroup; -import io.qdrant.client.grpc.Points.PointStruct; -import io.qdrant.client.grpc.Points.PointVectors; -import io.qdrant.client.grpc.Points.PointsIdsList; -import io.qdrant.client.grpc.Points.PointsOperationResponse; -import io.qdrant.client.grpc.Points.PointsSelector; -import io.qdrant.client.grpc.Points.PointsUpdateOperation; -import io.qdrant.client.grpc.Points.QueryBatchPoints; -import io.qdrant.client.grpc.Points.QueryBatchResponse; -import io.qdrant.client.grpc.Points.QueryGroupsResponse; -import io.qdrant.client.grpc.Points.QueryPointGroups; -import io.qdrant.client.grpc.Points.QueryPoints; -import io.qdrant.client.grpc.Points.QueryResponse; -import io.qdrant.client.grpc.Points.ReadConsistency; -import io.qdrant.client.grpc.Points.RecommendBatchPoints; -import io.qdrant.client.grpc.Points.RecommendBatchResponse; -import io.qdrant.client.grpc.Points.RecommendGroupsResponse; -import io.qdrant.client.grpc.Points.RecommendPointGroups; -import io.qdrant.client.grpc.Points.RecommendPoints; -import io.qdrant.client.grpc.Points.RecommendResponse; -import io.qdrant.client.grpc.Points.RetrievedPoint; -import io.qdrant.client.grpc.Points.ScoredPoint; -import io.qdrant.client.grpc.Points.ScrollPoints; -import io.qdrant.client.grpc.Points.ScrollResponse; -import io.qdrant.client.grpc.Points.SearchBatchPoints; -import io.qdrant.client.grpc.Points.SearchBatchResponse; -import io.qdrant.client.grpc.Points.SearchGroupsResponse; -import io.qdrant.client.grpc.Points.SearchPointGroups; -import io.qdrant.client.grpc.Points.SearchPoints; -import io.qdrant.client.grpc.Points.SearchResponse; -import io.qdrant.client.grpc.Points.SetPayloadPoints; -import io.qdrant.client.grpc.Points.UpdateBatchPoints; -import io.qdrant.client.grpc.Points.UpdateBatchResponse; -import io.qdrant.client.grpc.Points.UpdatePointVectors; -import io.qdrant.client.grpc.Points.UpdateResult; -import io.qdrant.client.grpc.Points.UpsertPoints; -import io.qdrant.client.grpc.Points.VectorsSelector; -import io.qdrant.client.grpc.Points.WithPayloadSelector; -import io.qdrant.client.grpc.Points.WithVectorsSelector; -import io.qdrant.client.grpc.Points.WriteOrdering; -import io.qdrant.client.grpc.Points.WriteOrderingType; -import io.qdrant.client.grpc.PointsGrpc; -import io.qdrant.client.grpc.QdrantGrpc.QdrantFutureStub; -import io.qdrant.client.grpc.QdrantOuterClass.HealthCheckReply; -import io.qdrant.client.grpc.QdrantOuterClass.HealthCheckRequest; -import io.qdrant.client.grpc.SnapshotsGrpc; -import io.qdrant.client.grpc.SnapshotsService.CreateFullSnapshotRequest; -import io.qdrant.client.grpc.SnapshotsService.CreateSnapshotRequest; -import io.qdrant.client.grpc.SnapshotsService.CreateSnapshotResponse; -import io.qdrant.client.grpc.SnapshotsService.DeleteFullSnapshotRequest; -import io.qdrant.client.grpc.SnapshotsService.DeleteSnapshotRequest; -import io.qdrant.client.grpc.SnapshotsService.DeleteSnapshotResponse; -import io.qdrant.client.grpc.SnapshotsService.ListFullSnapshotsRequest; -import io.qdrant.client.grpc.SnapshotsService.ListSnapshotsRequest; -import io.qdrant.client.grpc.SnapshotsService.ListSnapshotsResponse; -import io.qdrant.client.grpc.SnapshotsService.SnapshotDescription; -import java.time.Duration; -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; -import javax.annotation.Nullable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** Client for the Qdrant vector database. */ -public class QdrantClient implements AutoCloseable { - private static final Logger logger = LoggerFactory.getLogger(QdrantClient.class); - private final QdrantGrpcClient grpcClient; - - /** - * Creates a new instance of {@link QdrantClient} - * - * @param grpcClient The low-level gRPC client to use. - */ - public QdrantClient(QdrantGrpcClient grpcClient) { - this.grpcClient = grpcClient; - } - - /** - * Gets the low-level gRPC client. This is exposed to - * - *
      - *
    • Allow access to the underlying gRPC channel - *
    • Allow access to the gRPC client to make requests using the low-level gRPC client in cases - * where functionality may not yet be exposed by the higher level client. - *
    - * - * @return The low-level gRPC client - */ - public QdrantGrpcClient grpcClient() { - return grpcClient; - } - - /** - * Gets detailed information about the qdrant cluster. - * - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture healthCheckAsync() { - return healthCheckAsync(null); - } - - /** - * Gets detailed information about the qdrant cluster. - * - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture healthCheckAsync(@Nullable Duration timeout) { - QdrantFutureStub qdrant = - timeout != null - ? this.grpcClient.qdrant().withDeadlineAfter(timeout.toMillis(), TimeUnit.MILLISECONDS) - : this.grpcClient.qdrant(); - return qdrant.healthCheck(HealthCheckRequest.getDefaultInstance()); - } - - // region Collections - - /** - * Creates a new collection with the given parameters - * - * @param collectionName The name of the collection. - * @param vectorParams The vector parameters - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createCollectionAsync( - String collectionName, VectorParams vectorParams) { - return createCollectionAsync(collectionName, vectorParams, null); - } - - /** - * Creates a new collection with the given parameters - * - * @param collectionName The name of the collection. - * @param vectorParams The vector parameters - * @param timeout The timeout for the call - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createCollectionAsync( - String collectionName, VectorParams vectorParams, @Nullable Duration timeout) { - return createCollectionAsync( - CreateCollection.newBuilder() - .setCollectionName(collectionName) - .setVectorsConfig(VectorsConfig.newBuilder().setParams(vectorParams).build()) - .build(), - timeout); - } - - /** - * Creates a new collection with the given parameters - * - * @param collectionName The name of the collection. - * @param namedVectorParams The named vector parameters - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createCollectionAsync( - String collectionName, Map namedVectorParams) { - return createCollectionAsync(collectionName, namedVectorParams, null); - } - - /** - * Creates a new collection with the given parameters - * - * @param collectionName The name of the collection. - * @param namedVectorParams The named vector parameters - * @param timeout The timeout for the call - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createCollectionAsync( - String collectionName, - Map namedVectorParams, - @Nullable Duration timeout) { - return createCollectionAsync( - CreateCollection.newBuilder() - .setCollectionName(collectionName) - .setVectorsConfig( - VectorsConfig.newBuilder() - .setParamsMap(VectorParamsMap.newBuilder().putAllMap(namedVectorParams).build()) - .build()) - .build(), - timeout); - } - - /** - * Creates a new collection with the given parameters - * - * @param createCollection The collection creation parameters - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createCollectionAsync( - CreateCollection createCollection) { - return createCollectionAsync(createCollection, null); - } - - /** - * Creates a new collection with the given parameters - * - * @param createCollection The collection creation parameters - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createCollectionAsync( - CreateCollection createCollection, @Nullable Duration timeout) { - String collectionName = createCollection.getCollectionName(); - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - logger.debug("Create collection '{}'", collectionName); - ListenableFuture future = - getCollections(timeout).create(createCollection); - addLogFailureCallback(future, "Create collection"); - return Futures.transform( - future, - response -> { - if (!response.getResult()) { - logger.error("Collection '{}' could not be created", collectionName); - throw new QdrantException("Collection '" + collectionName + "' could not be created"); - } - return response; - }, - MoreExecutors.directExecutor()); - } - - /** - * Deletes a collection if one exists, and creates a new collection with the given parameters. - * - * @param collectionName The name of the collection. - * @param vectorParams The vector parameters - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture recreateCollectionAsync( - String collectionName, VectorParams vectorParams) { - return recreateCollectionAsync(collectionName, vectorParams, null); - } - - /** - * Deletes a collection if one exists, and creates a new collection with the given parameters. - * - * @param collectionName The name of the collection. - * @param vectorParams The vector parameters - * @param timeout The timeout for the call - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture recreateCollectionAsync( - String collectionName, VectorParams vectorParams, @Nullable Duration timeout) { - return recreateCollectionAsync( - CreateCollection.newBuilder() - .setCollectionName(collectionName) - .setVectorsConfig(VectorsConfig.newBuilder().setParams(vectorParams).build()) - .build(), - timeout); - } - - /** - * Deletes a collection if one exists, and creates a new collection with the given parameters. - * - * @param collectionName The name of the collection. - * @param namedVectorParams The named vector parameters - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture recreateCollectionAsync( - String collectionName, Map namedVectorParams) { - return recreateCollectionAsync(collectionName, namedVectorParams, null); - } - - /** - * Deletes a collection if one exists, and creates a new collection with the given parameters. - * - * @param collectionName The name of the collection. - * @param namedVectorParams The named vector parameters - * @param timeout The timeout for the call - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture recreateCollectionAsync( - String collectionName, - Map namedVectorParams, - @Nullable Duration timeout) { - return recreateCollectionAsync( - CreateCollection.newBuilder() - .setCollectionName(collectionName) - .setVectorsConfig( - VectorsConfig.newBuilder() - .setParamsMap(VectorParamsMap.newBuilder().putAllMap(namedVectorParams).build()) - .build()) - .build(), - timeout); - } - - /** - * Deletes a collection if one exists, and creates a new collection with the given parameters. - * - * @param createCollection The collection creation parameters - * @return a new instance of {@link CollectionOperationResponse} - */ - public ListenableFuture recreateCollectionAsync( - CreateCollection createCollection) { - return recreateCollectionAsync(createCollection, null); - } - - /** - * Deletes a collection if one exists, and creates a new collection with the given parameters. - * - * @param createCollection The collection creation parameters - * @param timeout The timeout for the call. - * @return a new instance of {@link CollectionOperationResponse} - */ - public ListenableFuture recreateCollectionAsync( - CreateCollection createCollection, @Nullable Duration timeout) { - return Futures.transformAsync( - deleteCollectionAsync(createCollection.getCollectionName(), timeout), - input -> createCollectionAsync(createCollection, timeout), - MoreExecutors.directExecutor()); - } - - /** - * Gets detailed information about an existing collection. - * - * @param collectionName The name of the collection. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture getCollectionInfoAsync(String collectionName) { - return getCollectionInfoAsync(collectionName, null); - } - - /** - * Gets detailed information about an existing collection. - * - * @param collectionName The name of the collection. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture getCollectionInfoAsync( - String collectionName, @Nullable Duration timeout) { - logger.debug("Get collection info for '{}'", collectionName); - GetCollectionInfoRequest request = - GetCollectionInfoRequest.newBuilder().setCollectionName(collectionName).build(); - ListenableFuture future = getCollections(timeout).get(request); - addLogFailureCallback(future, "Get collection info"); - return Futures.transform( - future, GetCollectionInfoResponse::getResult, MoreExecutors.directExecutor()); - } - - /** - * Gets detailed information about a collection's cluster setup. - * - * @param collectionName The name of the collection. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture getCollectionClusterInfoAsync( - String collectionName) { - return getCollectionClusterInfoAsync(collectionName, null); - } - - /** - * Gets detailed information about a collection's cluster setup. - * - * @param collectionName The name of the collection. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture getCollectionClusterInfoAsync( - String collectionName, @Nullable Duration timeout) { - logger.debug("Get collection cluster info for '{}'", collectionName); - CollectionClusterInfoRequest request = - CollectionClusterInfoRequest.newBuilder().setCollectionName(collectionName).build(); - ListenableFuture future = - getCollections(timeout).collectionClusterInfo(request); - addLogFailureCallback(future, "Get collection cluster info"); - return future; - } - - /** - * Deletes a collection and all its associated data. - * - * @param collectionName The name of the collection - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteCollectionAsync( - String collectionName) { - return deleteCollectionAsync(collectionName, null); - } - - /** - * Deletes a collection and all its associated data. - * - * @param collectionName The name of the collection - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteCollectionAsync( - String collectionName, @Nullable Duration timeout) { - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - logger.debug("Delete collection '{}'", collectionName); - - DeleteCollection deleteCollection = - DeleteCollection.newBuilder().setCollectionName(collectionName).build(); - ListenableFuture future = - getCollections(timeout).delete(deleteCollection); - addLogFailureCallback(future, "Delete collection"); - - return Futures.transform( - future, - response -> { - if (!response.getResult()) { - logger.error("Collection '{}' could not be deleted", collectionName); - throw new QdrantException("Collection '" + collectionName + "' could not be deleted"); - } - return response; - }, - MoreExecutors.directExecutor()); - } - - /** - * Gets the names of all existing collections - * - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> listCollectionsAsync() { - return listCollectionsAsync(null); - } - - /** - * Gets the names of all existing collections - * - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> listCollectionsAsync(@Nullable Duration timeout) { - logger.debug("List collections"); - - ListenableFuture future = - getCollections(timeout).list(ListCollectionsRequest.getDefaultInstance()); - - addLogFailureCallback(future, "List collection"); - return Futures.transform( - future, - response -> - response.getCollectionsList().stream() - .map(CollectionDescription::getName) - .collect(Collectors.toList()), - MoreExecutors.directExecutor()); - } - - /** - * Update parameters of the collection - * - * @param updateCollection The update parameters. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture updateCollectionAsync( - UpdateCollection updateCollection) { - return updateCollectionAsync(updateCollection, null); - } - - /** - * Update parameters of the collection - * - * @param updateCollection The update parameters. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture updateCollectionAsync( - UpdateCollection updateCollection, @Nullable Duration timeout) { - String collectionName = updateCollection.getCollectionName(); - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - logger.debug("Update collection '{}'", collectionName); - - ListenableFuture future = - getCollections(timeout).update(updateCollection); - addLogFailureCallback(future, "Update collection"); - return Futures.transform( - future, - response -> { - if (!response.getResult()) { - logger.error("Collection '{}' could not be updated", collectionName); - throw new QdrantException("Collection '" + collectionName + "' could not be updated"); - } - return response; - }, - MoreExecutors.directExecutor()); - } - - /** - * Update cluster setup for a collection - * - * @param updateCollectionClusterSetup The update parameters. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture updateCollectionClusterSetupAsync( - UpdateCollectionClusterSetupRequest updateCollectionClusterSetup) { - return updateCollectionClusterSetupAsync(updateCollectionClusterSetup, null); - } - - /** - * Update cluster setup for a collection - * - * @param updateCollectionClusterSetup The update parameters. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture updateCollectionClusterSetupAsync( - UpdateCollectionClusterSetupRequest updateCollectionClusterSetup, - @Nullable Duration timeout) { - String collectionName = updateCollectionClusterSetup.getCollectionName(); - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - logger.debug("Update collection cluster setup'{}'", collectionName); - - ListenableFuture future = - getCollections(timeout).updateCollectionClusterSetup(updateCollectionClusterSetup); - addLogFailureCallback(future, "Update collection"); - return Futures.transform( - future, - response -> { - if (!response.getResult()) { - logger.error("Cluster setup of collection '{}' could not be updated", collectionName); - throw new QdrantException( - "Cluster setup of collection '" + collectionName + "' could not be updated"); - } - return response; - }, - MoreExecutors.directExecutor()); - } - - /** - * Check if a collection exists - * - * @param collectionName The name of the collection. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture collectionExistsAsync(String collectionName) { - return collectionExistsAsync(collectionName, null); - } - - /** - * Check if a collection exists - * - * @param collectionName The name of the collection. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture collectionExistsAsync( - String collectionName, @Nullable Duration timeout) { - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - logger.debug("Collection exists '{}'", collectionName); - - ListenableFuture future = - getCollections(timeout) - .collectionExists( - CollectionExistsRequest.newBuilder().setCollectionName(collectionName).build()); - addLogFailureCallback(future, "Collection exists"); - return Futures.transform( - future, response -> response.getResult().getExists(), MoreExecutors.directExecutor()); - } - - // endregion - - // region Alias Management - - /** - * Creates an alias for a given collection. - * - * @param aliasName The alias to be created. - * @param collectionName The collection for which the alias is to be created. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createAliasAsync( - String aliasName, String collectionName) { - return createAliasAsync(aliasName, collectionName, null); - } - - /** - * Creates an alias for a given collection. - * - * @param aliasName The alias to be created. - * @param collectionName The collection for which the alias is to be created. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createAliasAsync( - String aliasName, String collectionName, @Nullable Duration timeout) { - return updateAliasesAsync( - ImmutableList.of( - AliasOperations.newBuilder() - .setCreateAlias( - CreateAlias.newBuilder() - .setAliasName(aliasName) - .setCollectionName(collectionName) - .build()) - .build()), - timeout); - } - - /** - * Renames an existing alias. - * - * @param oldAliasName The old alias name. - * @param newAliasName The new alias name. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture renameAliasAsync( - String oldAliasName, String newAliasName) { - return renameAliasAsync(oldAliasName, newAliasName, null); - } - - /** - * Renames an existing alias. - * - * @param oldAliasName The old alias name. - * @param newAliasName The new alias name. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture renameAliasAsync( - String oldAliasName, String newAliasName, @Nullable Duration timeout) { - return updateAliasesAsync( - ImmutableList.of( - AliasOperations.newBuilder() - .setRenameAlias( - RenameAlias.newBuilder() - .setOldAliasName(oldAliasName) - .setNewAliasName(newAliasName) - .build()) - .build()), - timeout); - } - - /** - * Deletes an alias. - * - * @param aliasName The alias to be deleted. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteAliasAsync(String aliasName) { - return deleteAliasAsync(aliasName, null); - } - - /** - * Deletes an alias. - * - * @param aliasName The alias to be deleted. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteAliasAsync( - String aliasName, @Nullable Duration timeout) { - return updateAliasesAsync( - ImmutableList.of( - AliasOperations.newBuilder() - .setDeleteAlias(DeleteAlias.newBuilder().setAliasName(aliasName).build()) - .build()), - timeout); - } - - /** - * Update the aliases of existing collections. - * - * @param aliasOperations The list of operations to perform. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture updateAliasesAsync( - List aliasOperations) { - return updateAliasesAsync(aliasOperations, null); - } - - /** - * Update the aliases of existing collections. - * - * @param aliasOperations The list of operations to perform. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture updateAliasesAsync( - List aliasOperations, @Nullable Duration timeout) { - ChangeAliases request = ChangeAliases.newBuilder().addAllActions(aliasOperations).build(); - - if (logger.isDebugEnabled()) { - for (AliasOperations aliasOperation : aliasOperations) { - switch (aliasOperation.getActionCase()) { - case CREATE_ALIAS: - CreateAlias createAlias = aliasOperation.getCreateAlias(); - logger.debug( - "Create alias '{}' for collection '{}'", - createAlias.getAliasName(), - createAlias.getCollectionName()); - break; - case RENAME_ALIAS: - RenameAlias renameAlias = aliasOperation.getRenameAlias(); - logger.debug( - "Rename alias '{}' to '{}'", - renameAlias.getOldAliasName(), - renameAlias.getNewAliasName()); - break; - case DELETE_ALIAS: - DeleteAlias deleteAlias = aliasOperation.getDeleteAlias(); - logger.debug("Delete alias '{}'", deleteAlias.getAliasName()); - break; - case ACTION_NOT_SET: - break; - } - } - } - - ListenableFuture future = - getCollections(timeout).updateAliases(request); - addLogFailureCallback(future, "Update aliases"); - return Futures.transform( - future, - response -> { - if (!response.getResult()) { - logger.error("Alias update operation could not be performed"); - throw new QdrantException("Alias update could not be performed"); - } - return response; - }, - MoreExecutors.directExecutor()); - } - - /** - * Gets a list of all aliases for a collection. - * - * @param collectionName The name of the collection. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> listCollectionAliasesAsync(String collectionName) { - return listCollectionAliasesAsync(collectionName, null); - } - - /** - * Gets a list of all aliases for a collection. - * - * @param collectionName The name of the collection. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> listCollectionAliasesAsync( - String collectionName, @Nullable Duration timeout) { - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - logger.debug("List aliases for collection '{}'", collectionName); - - ListCollectionAliasesRequest request = - ListCollectionAliasesRequest.newBuilder().setCollectionName(collectionName).build(); - - ListenableFuture future = - getCollections(timeout).listCollectionAliases(request); - addLogFailureCallback(future, "List collection aliases"); - return Futures.transform( - future, - response -> - response.getAliasesList().stream() - .map(AliasDescription::getAliasName) - .collect(Collectors.toList()), - MoreExecutors.directExecutor()); - } - - /** - * Gets a list of all aliases for all existing collections. - * - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> listAliasesAsync() { - return listAliasesAsync(null); - } - - /** - * Gets a list of all aliases for all existing collections. - * - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> listAliasesAsync(@Nullable Duration timeout) { - logger.debug("List all aliases"); - ListenableFuture future = - getCollections(timeout).listAliases(ListAliasesRequest.getDefaultInstance()); - addLogFailureCallback(future, "List aliases"); - return Futures.transform( - future, ListAliasesResponse::getAliasesList, MoreExecutors.directExecutor()); - } - - // endregion - - // region ShardKey Management - - /** - * Creates a shard key for a collection. - * - * @param createShardKey The request object for the operation. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createShardKeyAsync( - CreateShardKeyRequest createShardKey) { - return createShardKeyAsync(createShardKey, null); - } - - /** - * Creates a shard key for a collection. - * - * @param createShardKey The request object for the operation. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createShardKeyAsync( - CreateShardKeyRequest createShardKey, @Nullable Duration timeout) { - String collectionName = createShardKey.getCollectionName(); - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - ShardKey shardKey = createShardKey.getRequest().getShardKey(); - logger.debug("Create shard key '{}' for '{}'", shardKey, collectionName); - - ListenableFuture future = - getCollections(timeout).createShardKey(createShardKey); - addLogFailureCallback(future, "Create shard key"); - return Futures.transform( - future, - response -> { - if (!response.getResult()) { - logger.error("Shard key could not be created for '{}'", collectionName); - throw new QdrantException( - "Shard key " + shardKey + " could not be created for " + collectionName); - } - return response; - }, - MoreExecutors.directExecutor()); - } - - /** - * Deletes a shard key for a collection. - * - * @param deleteShardKey The request object for the operation. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteShardKeyAsync( - DeleteShardKeyRequest deleteShardKey) { - return deleteShardKeyAsync(deleteShardKey, null); - } - - /** - * Deletes a shard key for a collection. - * - * @param deleteShardKey The request object for the operation. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteShardKeyAsync( - DeleteShardKeyRequest deleteShardKey, @Nullable Duration timeout) { - String collectionName = deleteShardKey.getCollectionName(); - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - ShardKey shardKey = deleteShardKey.getRequest().getShardKey(); - logger.debug("Delete shard key '{}' for '{}'", shardKey, collectionName); - - ListenableFuture future = - getCollections(timeout).deleteShardKey(deleteShardKey); - addLogFailureCallback(future, "Delete shard key"); - return Futures.transform( - future, - response -> { - if (!response.getResult()) { - logger.error("Shard key '{}' could not be deleted for '{}'", shardKey, collectionName); - throw new QdrantException( - "Shard key " + shardKey + " could not be created for " + collectionName); - } - return response; - }, - MoreExecutors.directExecutor()); - } - - /** - * List the shard keys of a collection. - * - * @param collectionName The name of the collection to list shard keys for. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> listShardKeysAsync(String collectionName) { - return listShardKeysAsync(collectionName, null); - } - - /** - * List the shard keys of a collection. - * - * @param collectionName The name of the collection to list shard keys for. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> listShardKeysAsync( - String collectionName, @Nullable Duration timeout) { - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - logger.debug("List shard keys for '{}'", collectionName); - - ListenableFuture future = - getCollections(timeout) - .listShardKeys( - ListShardKeysRequest.newBuilder().setCollectionName(collectionName).build()); - addLogFailureCallback(future, "List Shard Keys"); - return Futures.transform( - future, response -> response.getShardKeysList(), MoreExecutors.directExecutor()); - } - - // endregion - - // region Point Management - - /** - * Perform insert and updates on points. If a point with a given ID already exists, it will be - * overwritten. - * - * @param collectionName The name of the collection. - * @param points The points to be upserted - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture upsertAsync( - String collectionName, List points) { - return upsertAsync(collectionName, points, null); - } - - /** - * Perform insert and updates on points. If a point with a given ID already exists, it will be - * overwritten. The call waits for the changes to be applied. - * - * @param collectionName The name of the collection. - * @param points The points to be upserted - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture upsertAsync( - String collectionName, List points, @Nullable Duration timeout) { - return upsertAsync( - UpsertPoints.newBuilder() - .setCollectionName(collectionName) - .addAllPoints(points) - .setWait(true) - .build(), - timeout); - } - - /** - * Perform insert and updates on points. If a point with a given ID already exists, it will be - * overwritten. - * - * @param request The upsert points request - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture upsertAsync(UpsertPoints request) { - return upsertAsync(request, null); - } - - /** - * Perform insert and updates on points. If a point with a given ID already exists, it will be - * overwritten. - * - * @param request The upsert points request - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture upsertAsync( - UpsertPoints request, @Nullable Duration timeout) { - String collectionName = request.getCollectionName(); - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - logger.debug("Upsert {} points into '{}'", request.getPointsList().size(), collectionName); - ListenableFuture future = getPoints(timeout).upsert(request); - addLogFailureCallback(future, "Upsert"); - return Futures.transform( - future, PointsOperationResponse::getResult, MoreExecutors.directExecutor()); - } - - /** - * Deletes points. The call waits for the changes to be applied. - * - * @param collectionName The name of the collection. - * @param ids The ids of points to delete. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteAsync(String collectionName, List ids) { - return deleteAsync(collectionName, ids, null); - } - - /** - * Deletes points. The call waits for the changes to be applied. - * - * @param collectionName The name of the collection. - * @param ids The ids of points to delete. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteAsync( - String collectionName, List ids, @Nullable Duration timeout) { - return deleteAsync( - DeletePoints.newBuilder() - .setCollectionName(collectionName) - .setPoints( - PointsSelector.newBuilder() - .setPoints(PointsIdsList.newBuilder().addAllIds(ids).build()) - .build()) - .setWait(true) - .build(), - timeout); - } - - /** - * Deletes points. The call waits for the changes to be applied. - * - * @param collectionName The name of the collection. - * @param filter A filter selecting the points to be deleted. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteAsync(String collectionName, Filter filter) { - return deleteAsync(collectionName, filter, null); - } - - /** - * Deletes points. - * - * @param collectionName The name of the collection. - * @param filter A filter selecting the points to be deleted. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteAsync( - String collectionName, Filter filter, @Nullable Duration timeout) { - return deleteAsync( - DeletePoints.newBuilder() - .setCollectionName(collectionName) - .setPoints(PointsSelector.newBuilder().setFilter(filter).build()) - .setWait(true) - .build(), - timeout); - } - - /** - * Deletes points. - * - * @param request The delete points request - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteAsync(DeletePoints request) { - return deleteAsync(request, null); - } - - /** - * Deletes points. - * - * @param request The delete points request - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteAsync( - DeletePoints request, @Nullable Duration timeout) { - String collectionName = request.getCollectionName(); - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - logger.debug("Delete from '{}'", collectionName); - ListenableFuture future = getPoints(timeout).delete(request); - addLogFailureCallback(future, "Delete"); - return Futures.transform( - future, PointsOperationResponse::getResult, MoreExecutors.directExecutor()); - } - - /** - * Retrieves points. Includes all payload, excludes vectors. - * - * @param collectionName The name of the collection. - * @param id The id of a point to retrieve - * @param readConsistency Options for specifying read consistency guarantees. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> retrieveAsync( - String collectionName, PointId id, @Nullable ReadConsistency readConsistency) { - return retrieveAsync(collectionName, id, true, false, readConsistency); - } - - /** - * Retrieves points. - * - * @param collectionName The name of the collection. - * @param id The id of a point to retrieve - * @param withPayload Whether to include the payload or not. - * @param withVectors Whether to include the vectors or not. - * @param readConsistency Options for specifying read consistency guarantees. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> retrieveAsync( - String collectionName, - PointId id, - boolean withPayload, - boolean withVectors, - @Nullable ReadConsistency readConsistency) { - return retrieveAsync( - collectionName, - ImmutableList.of(id), - WithPayloadSelectorFactory.enable(withPayload), - WithVectorsSelectorFactory.enable(withVectors), - readConsistency); - } - - /** - * Retrieves points. Includes all payload, excludes vectors. - * - * @param collectionName The name of the collection. - * @param ids The list of ids of points to retrieve - * @param readConsistency Options for specifying read consistency guarantees. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> retrieveAsync( - String collectionName, List ids, @Nullable ReadConsistency readConsistency) { - return retrieveAsync(collectionName, ids, true, false, readConsistency); - } - - /** - * Retrieves points. - * - * @param collectionName The name of the collection. - * @param ids The list of ids of points to retrieve - * @param withPayload Whether to include the payload or not. - * @param withVectors Whether to include the vectors or not. - * @param readConsistency Options for specifying read consistency guarantees. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> retrieveAsync( - String collectionName, - List ids, - boolean withPayload, - boolean withVectors, - @Nullable ReadConsistency readConsistency) { - return retrieveAsync( - collectionName, - ids, - WithPayloadSelectorFactory.enable(withPayload), - WithVectorsSelectorFactory.enable(withVectors), - readConsistency); - } - - /** - * Retrieves points. - * - * @param collectionName The name of the collection. - * @param ids The list of ids of points to retrieve - * @param payloadSelector Options for specifying which payload to include or not. - * @param vectorsSelector Options for specifying which vectors to include into response. - * @param readConsistency Options for specifying read consistency guarantees. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> retrieveAsync( - String collectionName, - List ids, - WithPayloadSelector payloadSelector, - WithVectorsSelector vectorsSelector, - @Nullable ReadConsistency readConsistency) { - return retrieveAsync( - collectionName, ids, payloadSelector, vectorsSelector, readConsistency, null); - } - - /** - * Retrieves points. - * - * @param collectionName The name of the collection. - * @param ids The list of ids of points to retrieve - * @param payloadSelector Options for specifying which payload to include or not. - * @param vectorsSelector Options for specifying which vectors to include into response. - * @param readConsistency Options for specifying read consistency guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> retrieveAsync( - String collectionName, - List ids, - WithPayloadSelector payloadSelector, - WithVectorsSelector vectorsSelector, - @Nullable ReadConsistency readConsistency, - @Nullable Duration timeout) { - logger.debug("Retrieve points from '{}'", collectionName); - GetPoints.Builder requestBuilder = - GetPoints.newBuilder() - .setCollectionName(collectionName) - .addAllIds(ids) - .setWithPayload(payloadSelector) - .setWithVectors(vectorsSelector); - - if (readConsistency != null) { - requestBuilder.setReadConsistency(readConsistency); - } - - return retrieveAsync(requestBuilder.build(), timeout); - } - - /** - * Retrieves points. - * - * @param request The get points request - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> retrieveAsync( - GetPoints request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - - logger.debug("Retrieve points from '{}'", request.getCollectionName()); - ListenableFuture future = getPoints(timeout).get(request); - addLogFailureCallback(future, "Retrieve"); - return Futures.transform(future, GetResponse::getResultList, MoreExecutors.directExecutor()); - } - - // region Update Vectors - - /** - * Update named vectors for point. - * - * @param collectionName The name of the collection. - * @param points The list of points and vectors to update. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture updateVectorsAsync( - String collectionName, List points) { - return updateVectorsAsync(collectionName, points, null, null, null); - } - - /** - * Update named vectors for point. - * - * @param collectionName The name of the collection. - * @param points The list of points and vectors to update. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture updateVectorsAsync( - String collectionName, List points, @Nullable Duration timeout) { - return updateVectorsAsync(collectionName, points, null, null, timeout); - } - - /** - * Update named vectors for point. - * - * @param collectionName The name of the collection. - * @param points The list of points and vectors to update. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture updateVectorsAsync( - String collectionName, - List points, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - logger.debug("Update vectors in '{}'", collectionName); - UpdatePointVectors.Builder requestBuilder = - UpdatePointVectors.newBuilder() - .setCollectionName(collectionName) - .addAllPoints(points) - .setWait(wait == null || wait); - - if (ordering != null) { - requestBuilder.setOrdering(WriteOrdering.newBuilder().setType(ordering).build()); - } - - return updateVectorsAsync(requestBuilder.build(), timeout); - } - - /** - * Update named vectors for point. - * - * @param request The update point vectors request - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture updateVectorsAsync(UpdatePointVectors request) { - return updateVectorsAsync(request, null); - } - - /** - * Update named vectors for point. - * - * @param request The update point vectors request - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture updateVectorsAsync( - UpdatePointVectors request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - logger.debug("Update vectors in '{}'", request.getCollectionName()); - ListenableFuture future = getPoints(timeout).updateVectors(request); - addLogFailureCallback(future, "Update vectors"); - return Futures.transform( - future, PointsOperationResponse::getResult, MoreExecutors.directExecutor()); - } - - // endregion - - // region Delete Vectors - - /** - * Delete named vectors for points. - * - * @param collectionName The name of the collection. - * @param vectors The list of vector names to delete. - * @param filter A filter selecting the points to be deleted. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteVectorsAsync( - String collectionName, List vectors, Filter filter) { - return deleteVectorsAsync( - collectionName, - vectors, - PointsSelector.newBuilder().setFilter(filter).build(), - null, - null, - null); - } - - /** - * Delete named vectors for points. - * - * @param collectionName The name of the collection. - * @param vectors The list of vector names to delete. - * @param filter A filter selecting the points to be deleted. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteVectorsAsync( - String collectionName, List vectors, Filter filter, @Nullable Duration timeout) { - return deleteVectorsAsync( - collectionName, - vectors, - PointsSelector.newBuilder().setFilter(filter).build(), - null, - null, - timeout); - } - - /** - * Delete named vectors for points. - * - * @param collectionName The name of the collection. - * @param vectors The list of vector names to delete. - * @param filter A filter selecting the points to be deleted. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteVectorsAsync( - String collectionName, - List vectors, - Filter filter, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return deleteVectorsAsync( - collectionName, - vectors, - PointsSelector.newBuilder().setFilter(filter).build(), - wait, - ordering, - timeout); - } - - /** - * Delete named vectors for points. - * - * @param collectionName The name of the collection. - * @param vectors The list of vector names to delete. - * @param ids The list of ids to delete. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteVectorsAsync( - String collectionName, List vectors, List ids) { - return deleteVectorsAsync( - collectionName, - vectors, - PointsSelector.newBuilder() - .setPoints(PointsIdsList.newBuilder().addAllIds(ids).build()) - .build(), - null, - null, - null); - } - - /** - * Delete named vectors for points. - * - * @param collectionName The name of the collection. - * @param vectors The list of vector names to delete. - * @param ids The list of ids to delete. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteVectorsAsync( - String collectionName, List vectors, List ids, @Nullable Duration timeout) { - return deleteVectorsAsync( - collectionName, - vectors, - PointsSelector.newBuilder() - .setPoints(PointsIdsList.newBuilder().addAllIds(ids).build()) - .build(), - null, - null, - timeout); - } - - /** - * Delete named vectors for points. - * - * @param collectionName The name of the collection. - * @param vectors The list of vector names to delete. - * @param ids The list of ids to delete. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteVectorsAsync( - String collectionName, - List vectors, - List ids, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return deleteVectorsAsync( - collectionName, - vectors, - PointsSelector.newBuilder() - .setPoints(PointsIdsList.newBuilder().addAllIds(ids).build()) - .build(), - wait, - ordering, - timeout); - } - - /** - * Delete named vectors for points. - * - * @param collectionName The name of the collection. - * @param vectors The list of vector names to delete. - * @param pointsSelector A selector for the points to be deleted. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteVectorsAsync( - String collectionName, - List vectors, - PointsSelector pointsSelector, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - logger.debug("Delete vectors in '{}'", collectionName); - DeletePointVectors.Builder requestBuilder = - DeletePointVectors.newBuilder() - .setCollectionName(collectionName) - .setVectors(VectorsSelector.newBuilder().addAllNames(vectors).build()) - .setPointsSelector(pointsSelector) - .setWait(wait == null || wait); - - if (ordering != null) { - requestBuilder.setOrdering(WriteOrdering.newBuilder().setType(ordering).build()); - } - - return deleteVectorsAsync(requestBuilder.build(), timeout); - } - - /** - * Delete named vectors for points. - * - * @param request The delete point vectors request - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteVectorsAsync( - DeletePointVectors request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - logger.debug("Delete vectors in '{}'", request.getCollectionName()); - ListenableFuture future = getPoints(timeout).deleteVectors(request); - addLogFailureCallback(future, "Delete vectors"); - return Futures.transform( - future, PointsOperationResponse::getResult, MoreExecutors.directExecutor()); - } - - // endregion - - // endregion - - // region Set Payload - - /** - * Sets the payload for all points in the collection. - * - * @param collectionName The name of the collection. - * @param payload New payload values - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture setPayloadAsync( - String collectionName, - Map payload, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return setPayloadAsync(collectionName, payload, (PointsSelector) null, wait, ordering, timeout); - } - - /** - * Sets the payload for the given id. - * - * @param collectionName The name of the collection. - * @param payload New payload values - * @param id The id for which to set the payload. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture setPayloadAsync( - String collectionName, - Map payload, - PointId id, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return setPayloadAsync( - collectionName, - payload, - PointsSelector.newBuilder() - .setPoints(PointsIdsList.newBuilder().addIds(id).build()) - .build(), - wait, - ordering, - timeout); - } - - /** - * Sets the payload for the given ids. - * - * @param collectionName The name of the collection. - * @param payload New payload values - * @param ids The ids for which to set the payload. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture setPayloadAsync( - String collectionName, - Map payload, - List ids, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return setPayloadAsync( - collectionName, - payload, - PointsSelector.newBuilder() - .setPoints(PointsIdsList.newBuilder().addAllIds(ids).build()) - .build(), - wait, - ordering, - timeout); - } - - /** - * Sets the payload for the given ids. - * - * @param collectionName The name of the collection. - * @param payload New payload values - * @param filter A filter selecting the points to be set. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture setPayloadAsync( - String collectionName, - Map payload, - Filter filter, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return setPayloadAsync( - collectionName, - payload, - PointsSelector.newBuilder().setFilter(filter).build(), - wait, - ordering, - timeout); - } - - /** - * Sets the payload for the points. - * - * @param collectionName The name of the collection. - * @param payload New payload values - * @param pointsSelector selector for the points whose payloads are to be set. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture setPayloadAsync( - String collectionName, - Map payload, - @Nullable PointsSelector pointsSelector, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return setPayloadAsync(collectionName, payload, pointsSelector, wait, null, ordering, timeout); - } - - /** - * Sets the payload for the points. - * - * @param collectionName The name of the collection. - * @param payload New payload values - * @param pointsSelector Selector for the points whose payloads are to be set. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param key The key for which to set the payload if nested - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture setPayloadAsync( - String collectionName, - Map payload, - @Nullable PointsSelector pointsSelector, - @Nullable Boolean wait, - @Nullable String key, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - SetPayloadPoints.Builder requestBuilder = - SetPayloadPoints.newBuilder() - .setCollectionName(collectionName) - .setWait(wait == null || wait) - .putAllPayload(payload); - - if (pointsSelector != null) { - requestBuilder.setPointsSelector(pointsSelector); - } - - if (ordering != null) { - requestBuilder.setOrdering(WriteOrdering.newBuilder().setType(ordering).build()); - } - - if (key != null) { - requestBuilder.setKey(key); - } - - return setPayloadAsync(requestBuilder.build(), timeout); - } - - /** - * Sets the payload for the points. - * - * @param request The set payload request. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture setPayloadAsync( - SetPayloadPoints request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - logger.debug("Set payload in '{}'", request.getCollectionName()); - ListenableFuture future = getPoints(timeout).setPayload(request); - addLogFailureCallback(future, "Set payload"); - return Futures.transform( - future, PointsOperationResponse::getResult, MoreExecutors.directExecutor()); - } - - // endregion - - // region Overwrite payload - - /** - * Overwrites the payload for all points in the collection. - * - * @param collectionName The name of the collection. - * @param payload New payload values - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture overwritePayloadAsync( - String collectionName, - Map payload, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return overwritePayloadAsync( - collectionName, payload, (PointsSelector) null, wait, ordering, timeout); - } - - /** - * Overwrites the payload for the given id. - * - * @param collectionName The name of the collection. - * @param payload New payload values - * @param id The id for which to overwrite the payload. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture overwritePayloadAsync( - String collectionName, - Map payload, - PointId id, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return overwritePayloadAsync( - collectionName, - payload, - PointsSelector.newBuilder() - .setPoints(PointsIdsList.newBuilder().addIds(id).build()) - .build(), - wait, - ordering, - timeout); - } - - /** - * Overwrites the payload for the given ids. - * - * @param collectionName The name of the collection. - * @param payload New payload values - * @param ids The ids for which to overwrite the payload. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture overwritePayloadAsync( - String collectionName, - Map payload, - List ids, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return overwritePayloadAsync( - collectionName, - payload, - PointsSelector.newBuilder() - .setPoints(PointsIdsList.newBuilder().addAllIds(ids).build()) - .build(), - wait, - ordering, - timeout); - } - - /** - * Overwrites the payload for the filtered points. - * - * @param collectionName The name of the collection. - * @param payload New payload values - * @param filter A filter selecting the points for which to overwrite the payload. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture overwritePayloadAsync( - String collectionName, - Map payload, - Filter filter, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return overwritePayloadAsync( - collectionName, - payload, - PointsSelector.newBuilder().setFilter(filter).build(), - wait, - ordering, - timeout); - } - - /** - * Overwrites the payload for the points. - * - * @param collectionName The name of the collection. - * @param payload New payload values - * @param pointsSelector A selector for the points whose payloads are to be overwritten. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture overwritePayloadAsync( - String collectionName, - Map payload, - @Nullable PointsSelector pointsSelector, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return overwritePayloadAsync( - collectionName, payload, pointsSelector, wait, null, ordering, timeout); - } - - /** - * Overwrites the payload for the points. - * - * @param collectionName The name of the collection. - * @param payload New payload values - * @param pointsSelector Selector for the points whose payloads are to be overwritten. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param key The key for which to overwrite the payload if nested - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture overwritePayloadAsync( - String collectionName, - Map payload, - @Nullable PointsSelector pointsSelector, - @Nullable Boolean wait, - @Nullable String key, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - SetPayloadPoints.Builder requestBuilder = - SetPayloadPoints.newBuilder() - .setCollectionName(collectionName) - .setWait(wait == null || wait) - .putAllPayload(payload); - - if (pointsSelector != null) { - requestBuilder.setPointsSelector(pointsSelector); - } - - if (ordering != null) { - requestBuilder.setOrdering(WriteOrdering.newBuilder().setType(ordering).build()); - } - - if (key != null) requestBuilder.setKey(key); - - return overwritePayloadAsync(requestBuilder.build(), timeout); - } - - /** - * Overwrites the payload for the points. - * - * @param request The overwrite payload request - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture overwritePayloadAsync( - SetPayloadPoints request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - logger.debug("Set payload in '{}'", request.getCollectionName()); - ListenableFuture future = getPoints(timeout).overwritePayload(request); - addLogFailureCallback(future, "Overwrite payload"); - return Futures.transform( - future, PointsOperationResponse::getResult, MoreExecutors.directExecutor()); - } - - // endregion - - // region Delete Payload - - /** - * Delete specified key payload for all points. - * - * @param collectionName The name of the collection. - * @param keys List of keys to delete. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deletePayloadAsync( - String collectionName, - List keys, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return deletePayloadAsync(collectionName, keys, (PointsSelector) null, wait, ordering, timeout); - } - - /** - * Delete specified key payload for the given id. - * - * @param collectionName The name of the collection. - * @param keys List of keys to delete. - * @param id The id for which to delete the payload. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deletePayloadAsync( - String collectionName, - List keys, - PointId id, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return deletePayloadAsync( - collectionName, - keys, - PointsSelector.newBuilder() - .setPoints(PointsIdsList.newBuilder().addIds(id).build()) - .build(), - wait, - ordering, - timeout); - } - - /** - * Delete specified key payload for the given ids. - * - * @param collectionName The name of the collection. - * @param keys List of keys to delete. - * @param ids The ids for which to delete the payload. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deletePayloadAsync( - String collectionName, - List keys, - List ids, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return deletePayloadAsync( - collectionName, - keys, - PointsSelector.newBuilder() - .setPoints(PointsIdsList.newBuilder().addAllIds(ids).build()) - .build(), - wait, - ordering, - timeout); - } - - /** - * Delete specified key payload for the filtered points. - * - * @param collectionName The name of the collection. - * @param keys List of keys to delete. - * @param filter A filter selecting the points to for which to delete the payload. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deletePayloadAsync( - String collectionName, - List keys, - Filter filter, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return deletePayloadAsync( - collectionName, - keys, - PointsSelector.newBuilder().setFilter(filter).build(), - wait, - ordering, - timeout); - } - - /** - * Delete specified key payload for the points. - * - * @param collectionName The name of the collection. - * @param keys List of keys to delete. - * @param pointsSelector selector for the points whose payloads are to be deleted. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deletePayloadAsync( - String collectionName, - List keys, - @Nullable PointsSelector pointsSelector, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - DeletePayloadPoints.Builder requestBuilder = - DeletePayloadPoints.newBuilder() - .setCollectionName(collectionName) - .setWait(wait == null || wait) - .addAllKeys(keys); - - if (pointsSelector != null) { - requestBuilder.setPointsSelector(pointsSelector); - } - - if (ordering != null) { - requestBuilder.setOrdering(WriteOrdering.newBuilder().setType(ordering).build()); - } - - return deletePayloadAsync(requestBuilder.build(), timeout); - } - - /** - * Delete specified key payload for the points. - * - * @param request The delete payload request - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deletePayloadAsync( - DeletePayloadPoints request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - logger.debug("Delete payload in '{}'", request.getCollectionName()); - ListenableFuture future = getPoints(timeout).deletePayload(request); - addLogFailureCallback(future, "Delete payload"); - return Futures.transform( - future, PointsOperationResponse::getResult, MoreExecutors.directExecutor()); - } - - // endregion - - // region Clear Payload - - /** - * Remove all payload for all points. - * - * @param collectionName The name of the collection. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture clearPayloadAsync( - String collectionName, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return clearPayloadAsync(collectionName, (PointsSelector) null, wait, ordering, timeout); - } - - /** - * Removes all payload for the given id. - * - * @param collectionName The name of the collection. - * @param id The id for which to remove the payload. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture clearPayloadAsync( - String collectionName, - PointId id, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return clearPayloadAsync( - collectionName, - PointsSelector.newBuilder() - .setPoints(PointsIdsList.newBuilder().addIds(id).build()) - .build(), - wait, - ordering, - timeout); - } - - /** - * Removes all payload for the given ids. - * - * @param collectionName The name of the collection. - * @param ids The ids for which to remove the payload. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture clearPayloadAsync( - String collectionName, - List ids, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return clearPayloadAsync( - collectionName, - PointsSelector.newBuilder() - .setPoints(PointsIdsList.newBuilder().addAllIds(ids).build()) - .build(), - wait, - ordering, - timeout); - } - - /** - * Removes all payload for the filtered points. - * - * @param collectionName The name of the collection. - * @param filter A filter selecting the points for which to remove the payload. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture clearPayloadAsync( - String collectionName, - Filter filter, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - return clearPayloadAsync( - collectionName, - PointsSelector.newBuilder().setFilter(filter).build(), - wait, - ordering, - timeout); - } - - /** - * Removes all payload for the points. - * - * @param collectionName The name of the collection. - * @param pointsSelector A selector for the points whose payloads are to be removed. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture clearPayloadAsync( - String collectionName, - @Nullable PointsSelector pointsSelector, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - ClearPayloadPoints.Builder requestBuilder = - ClearPayloadPoints.newBuilder() - .setCollectionName(collectionName) - .setWait(wait == null || wait); - - if (pointsSelector != null) { - requestBuilder.setPoints(pointsSelector); - } - - if (ordering != null) { - requestBuilder.setOrdering(WriteOrdering.newBuilder().setType(ordering).build()); - } - - return clearPayloadAsync(requestBuilder.build(), timeout); - } - - /** - * Removes all payload for the points. - * - * @param request The clear payload request - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture clearPayloadAsync( - ClearPayloadPoints request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - logger.debug("Clear payload in '{}'", request.getCollectionName()); - ListenableFuture future = getPoints(timeout).clearPayload(request); - addLogFailureCallback(future, "Clear payload"); - return Futures.transform( - future, PointsOperationResponse::getResult, MoreExecutors.directExecutor()); - } - - // endregion - - /** - * Creates a payload field index in a collection. - * - * @param collectionName The name of the collection. - * @param field The field name to index. - * @param schemaType The schema type of the field. - * @param indexParams Payload index parameters. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createPayloadIndexAsync( - String collectionName, - String field, - PayloadSchemaType schemaType, - @Nullable PayloadIndexParams indexParams, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - CreateFieldIndexCollection.Builder requestBuilder = - CreateFieldIndexCollection.newBuilder() - .setCollectionName(collectionName) - .setFieldName(field) - .setWait(wait == null || wait); - - switch (schemaType) { - case Keyword: - requestBuilder.setFieldType(FieldType.FieldTypeKeyword); - break; - case Integer: - requestBuilder.setFieldType(FieldType.FieldTypeInteger); - break; - case Float: - requestBuilder.setFieldType(FieldType.FieldTypeFloat); - break; - case Geo: - requestBuilder.setFieldType(FieldType.FieldTypeGeo); - break; - case Text: - requestBuilder.setFieldType(FieldType.FieldTypeText); - break; - case Bool: - requestBuilder.setFieldType(FieldType.FieldTypeBool); - break; - case Datetime: - requestBuilder.setFieldType(FieldType.FieldTypeDatetime); - break; - case Uuid: - requestBuilder.setFieldType(FieldType.FieldTypeUuid); - break; - default: - throw new IllegalArgumentException("Invalid schemaType: '" + schemaType + "'"); - } - - if (indexParams != null) { - requestBuilder.setFieldIndexParams(indexParams); - } - - if (ordering != null) { - requestBuilder.setOrdering(WriteOrdering.newBuilder().setType(ordering).build()); - } - - return createPayloadIndexAsync(requestBuilder.build(), timeout); - } - - /** - * Creates a payload field index in a collection. - * - * @param request The create field index request. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createPayloadIndexAsync( - CreateFieldIndexCollection request, @Nullable Duration timeout) { - logger.debug( - "Create payload field index for '{}' in '{}'", - request.getFieldName(), - request.getCollectionName()); - ListenableFuture future = getPoints(timeout).createFieldIndex(request); - addLogFailureCallback(future, "Create payload field index"); - return Futures.transform( - future, PointsOperationResponse::getResult, MoreExecutors.directExecutor()); - } - - /** - * Deletes a payload field index in a collection. - * - * @param collectionName The name of the collection. - * @param field The field name to index. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deletePayloadIndexAsync( - String collectionName, - String field, - @Nullable Boolean wait, - @Nullable WriteOrderingType ordering, - @Nullable Duration timeout) { - DeleteFieldIndexCollection.Builder requestBuilder = - DeleteFieldIndexCollection.newBuilder() - .setCollectionName(collectionName) - .setFieldName(field) - .setWait(wait == null || wait); - - if (ordering != null) { - requestBuilder.setOrdering(WriteOrdering.newBuilder().setType(ordering).build()); - } - - logger.debug("Delete payload field index for '{}' in '{}'", field, collectionName); - ListenableFuture future = - getPoints(timeout).deleteFieldIndex(requestBuilder.build()); - addLogFailureCallback(future, "Delete payload field index"); - return Futures.transform( - future, PointsOperationResponse::getResult, MoreExecutors.directExecutor()); - } - - /** - * Creates a new named vector on a collection. - * - * @param request The create vector name request. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createVectorNameAsync(CreateVectorNameRequest request) { - return createVectorNameAsync(request, null); - } - - /** - * Creates a new named vector on a collection. - * - * @param request The create vector name request. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createVectorNameAsync( - CreateVectorNameRequest request, @Nullable Duration timeout) { - logger.debug( - "Create vector name '{}' in '{}'", request.getVectorName(), request.getCollectionName()); - ListenableFuture future = getPoints(timeout).createVectorName(request); - addLogFailureCallback(future, "Create vector name"); - return Futures.transform( - future, PointsOperationResponse::getResult, MoreExecutors.directExecutor()); - } - - /** - * Deletes a named vector from a collection. - * - * @param request The delete vector name request. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteVectorNameAsync(DeleteVectorNameRequest request) { - return deleteVectorNameAsync(request, null); - } - - /** - * Deletes a named vector from a collection. - * - * @param request The delete vector name request. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteVectorNameAsync( - DeleteVectorNameRequest request, @Nullable Duration timeout) { - logger.debug( - "Delete vector name '{}' in '{}'", request.getVectorName(), request.getCollectionName()); - ListenableFuture future = getPoints(timeout).deleteVectorName(request); - addLogFailureCallback(future, "Delete vector name"); - return Futures.transform( - future, PointsOperationResponse::getResult, MoreExecutors.directExecutor()); - } - - /** - * Retrieves closest points based on vector similarity and the given filtering conditions. - * - * @param request the search request - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> searchAsync(SearchPoints request) { - return searchAsync(request, null); - } - - /** - * Retrieves closest points based on vector similarity and the given filtering conditions. - * - * @param request the search request - * @param timeout the timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> searchAsync( - SearchPoints request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - Preconditions.checkArgument(!request.getVectorList().isEmpty(), "Vector must not be empty"); - - logger.debug("Search on '{}'", request.getCollectionName()); - ListenableFuture future = getPoints(timeout).search(request); - addLogFailureCallback(future, "Search"); - return Futures.transform(future, SearchResponse::getResultList, MoreExecutors.directExecutor()); - } - - /** - * Retrieves closest points based on vector similarity and the given filtering conditions. - * - * @param collectionName The name of the collection - * @param searches The searches to be performed in the batch. - * @param readConsistency Options for specifying read consistency guarantees. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> searchBatchAsync( - String collectionName, - List searches, - @Nullable ReadConsistency readConsistency) { - return searchBatchAsync(collectionName, searches, readConsistency, null); - } - - /** - * Retrieves closest points based on vector similarity and the given filtering conditions. - * - * @param collectionName The name of the collection - * @param searches The searches to be performed in the batch. - * @param readConsistency Options for specifying read consistency guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> searchBatchAsync( - String collectionName, - List searches, - @Nullable ReadConsistency readConsistency, - @Nullable Duration timeout) { - // TODO: Workaround for https://github.com/qdrant/qdrant/issues/2880 - searches = - Lists.transform( - searches, - searchPoints -> searchPoints.toBuilder().setCollectionName(collectionName).build()); - - SearchBatchPoints.Builder requestBuilder = - SearchBatchPoints.newBuilder() - .setCollectionName(collectionName) - .addAllSearchPoints(searches); - - if (readConsistency != null) { - requestBuilder.setReadConsistency(readConsistency); - } - - logger.debug("Search batch on '{}'", collectionName); - ListenableFuture future = - getPoints(timeout).searchBatch(requestBuilder.build()); - addLogFailureCallback(future, "Search batch"); - return Futures.transform( - future, SearchBatchResponse::getResultList, MoreExecutors.directExecutor()); - } - - /** - * Retrieves closest points based on vector similarity and the given filtering conditions, grouped - * by a given field. - * - * @param request The search group request - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> searchGroupsAsync(SearchPointGroups request) { - return searchGroupsAsync(request, null); - } - - /** - * Retrieves closest points based on vector similarity and the given filtering conditions, grouped - * by a given field. - * - * @param request The search group request - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> searchGroupsAsync( - SearchPointGroups request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - logger.debug("Search groups on '{}'", request.getCollectionName()); - ListenableFuture future = getPoints(timeout).searchGroups(request); - addLogFailureCallback(future, "Search groups"); - return Futures.transform( - future, response -> response.getResult().getGroupsList(), MoreExecutors.directExecutor()); - } - - /** - * Iterates over all or filtered points. - * - * @param request The scroll request - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture scrollAsync(ScrollPoints request) { - return scrollAsync(request, null); - } - - /** - * Iterates over all or filtered points. - * - * @param request The scroll request. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture scrollAsync( - ScrollPoints request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - logger.debug("Scroll on '{}'", request.getCollectionName()); - ListenableFuture future = getPoints(timeout).scroll(request); - addLogFailureCallback(future, "Scroll"); - return future; - } - - /** - * Look for the points which are closer to stored positive examples and at the same time further - * to negative examples. - * - * @param request The recommend request - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> recommendAsync(RecommendPoints request) { - return recommendAsync(request, null); - } - - /** - * Look for the points which are closer to stored positive examples and at the same time further - * to negative examples. - * - * @param request The recommend request. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> recommendAsync( - RecommendPoints request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - logger.debug("Recommend on '{}'", request.getCollectionName()); - ListenableFuture future = getPoints(timeout).recommend(request); - addLogFailureCallback(future, "Recommend"); - return Futures.transform( - future, RecommendResponse::getResultList, MoreExecutors.directExecutor()); - } - - /** - * Look for the points which are closer to stored positive examples and at the same time further - * to negative examples. - * - * @param collectionName The name of the collection. - * @param recommendSearches The list of recommendation searches. - * @param readConsistency Options for specifying read consistency guarantees. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> recommendBatchAsync( - String collectionName, - List recommendSearches, - @Nullable ReadConsistency readConsistency) { - return recommendBatchAsync(collectionName, recommendSearches, readConsistency, null); - } - - /** - * Look for the points which are closer to stored positive examples and at the same time further - * to negative examples. - * - * @param collectionName The name of the collection. - * @param recommendSearches The list of recommendation searches. - * @param readConsistency Options for specifying read consistency guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> recommendBatchAsync( - String collectionName, - List recommendSearches, - @Nullable ReadConsistency readConsistency, - @Nullable Duration timeout) { - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - - // TODO: Workaround for https://github.com/qdrant/qdrant/issues/2880 - recommendSearches = - Lists.transform( - recommendSearches, - recommendPoints -> - recommendPoints.toBuilder().setCollectionName(collectionName).build()); - - RecommendBatchPoints.Builder requestBuilder = - RecommendBatchPoints.newBuilder() - .setCollectionName(collectionName) - .addAllRecommendPoints(recommendSearches); - - if (readConsistency != null) { - requestBuilder.setReadConsistency(readConsistency); - } - - logger.debug("Recommend batch on '{}'", collectionName); - ListenableFuture future = - getPoints(timeout).recommendBatch(requestBuilder.build()); - addLogFailureCallback(future, "Recommend batch"); - return Futures.transform( - future, RecommendBatchResponse::getResultList, MoreExecutors.directExecutor()); - } - - /** - * Performs a batch update of points. - * - * @param collectionName The name of the collection. - * @param operations The list of point update operations. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> batchUpdateAsync( - String collectionName, List operations) { - return batchUpdateAsync(collectionName, operations, null, null, null); - } - - /** - * Performs a batch update of points. - * - * @param collectionName The name of the collection. - * @param operations The list of point update operations. - * @param wait Whether to wait until the changes have been applied. Defaults to true. - * @param ordering Write ordering guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> batchUpdateAsync( - String collectionName, - List operations, - @Nullable Boolean wait, - @Nullable WriteOrdering ordering, - @Nullable Duration timeout) { - - UpdateBatchPoints.Builder requestBuilder = - UpdateBatchPoints.newBuilder() - .setCollectionName(collectionName) - .addAllOperations(operations) - .setWait(wait == null || wait); - - if (ordering != null) { - requestBuilder.setOrdering(ordering); - } - return batchUpdateAsync(requestBuilder.build(), timeout); - } - - /** - * Performs a batch update of points. - * - * @param request The update batch request. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> batchUpdateAsync( - UpdateBatchPoints request, @Nullable Duration timeout) { - String collectionName = request.getCollectionName(); - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - logger.debug("Batch update points on '{}'", collectionName); - ListenableFuture future = getPoints(timeout).updateBatch(request); - addLogFailureCallback(future, "Batch update points"); - return Futures.transform( - future, UpdateBatchResponse::getResultList, MoreExecutors.directExecutor()); - } - - /** - * Look for the points which are closer to stored positive examples and at the same time further - * to negative examples, grouped by a given field - * - * @param request The recommend groups request - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> recommendGroupsAsync(RecommendPointGroups request) { - return recommendGroupsAsync(request, null); - } - - /** - * Look for the points which are closer to stored positive examples and at the same time further - * to negative examples, grouped by a given field - * - * @param request The recommend groups request - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> recommendGroupsAsync( - RecommendPointGroups request, @Nullable Duration timeout) { - String collectionName = request.getCollectionName(); - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - logger.debug("Recommend groups on '{}'", collectionName); - ListenableFuture future = getPoints(timeout).recommendGroups(request); - addLogFailureCallback(future, "Recommend groups"); - return Futures.transform( - future, response -> response.getResult().getGroupsList(), MoreExecutors.directExecutor()); - } - - /** - * Use the context and a target to find the most similar points to the target. Constraints by the - * context. - * - * @param request The discover points request - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> discoverAsync(DiscoverPoints request) { - return discoverAsync(request, null); - } - - /** - * Use the context and a target to find the most similar points to the target. Constraints by the - * context. - * - * @param request The discover points request - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> discoverAsync( - DiscoverPoints request, @Nullable Duration timeout) { - String collectionName = request.getCollectionName(); - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - logger.debug("Discover on '{}'", collectionName); - ListenableFuture future = getPoints(timeout).discover(request); - addLogFailureCallback(future, "Discover"); - return Futures.transform( - future, DiscoverResponse::getResultList, MoreExecutors.directExecutor()); - } - - /** - * Use the context and a target to find the most similar points to the target in a batch. - * Constrained by the context. - * - * @param collectionName The name of the collection - * @param discoverSearches The list for discover point searches - * @param readConsistency Options for specifying read consistency guarantees - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> discoverBatchAsync( - String collectionName, - List discoverSearches, - @Nullable ReadConsistency readConsistency) { - return discoverBatchAsync(collectionName, discoverSearches, readConsistency, null); - } - - /** - * Use the context and a target to find the most similar points to the target in a batch. - * Constrained by the context. - * - * @param collectionName The name of the collection - * @param discoverSearches The list for discover point searches - * @param readConsistency Options for specifying read consistency guarantees - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> discoverBatchAsync( - String collectionName, - List discoverSearches, - @Nullable ReadConsistency readConsistency, - @Nullable Duration timeout) { - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - - DiscoverBatchPoints.Builder requestBuilder = - DiscoverBatchPoints.newBuilder() - .setCollectionName(collectionName) - .addAllDiscoverPoints(discoverSearches); - - if (readConsistency != null) { - requestBuilder.setReadConsistency(readConsistency); - } - logger.debug("Discover batch on '{}'", collectionName); - ListenableFuture future = - getPoints(timeout).discoverBatch(requestBuilder.build()); - addLogFailureCallback(future, "Discover batch"); - return Futures.transform( - future, DiscoverBatchResponse::getResultList, MoreExecutors.directExecutor()); - } - - /** - * Count the points in a collection. The count is exact - * - * @param collectionName The name of the collection. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture countAsync(String collectionName) { - return countAsync(collectionName, null, null, null); - } - - /** - * Count the points in a collection. The count is exact - * - * @param collectionName The name of the collection. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture countAsync(String collectionName, @Nullable Duration timeout) { - return countAsync(collectionName, null, null, timeout); - } - - /** - * Count the points in a collection with the given filtering conditions. - * - * @param collectionName The name of the collection. - * @param filter Filter conditions - return only those points that satisfy the specified - * conditions. - * @param exact If true, returns the exact count, if false, returns an - * approximate count. Defaults to true. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture countAsync( - String collectionName, @Nullable Filter filter, @Nullable Boolean exact) { - return countAsync(collectionName, filter, exact, null); - } - - /** - * Count the points in a collection with the given filtering conditions. - * - * @param collectionName The name of the collection. - * @param filter Filter conditions - return only those points that satisfy the specified - * conditions. - * @param exact If true, returns the exact count, if false, returns an - * approximate count. Defaults to true. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture countAsync( - String collectionName, - @Nullable Filter filter, - @Nullable Boolean exact, - @Nullable Duration timeout) { - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - CountPoints.Builder requestBuilder = - CountPoints.newBuilder().setCollectionName(collectionName).setExact(exact == null || exact); - - if (filter != null) { - requestBuilder.setFilter(filter); - } - - logger.debug("Count on '{}'", collectionName); - ListenableFuture future = getPoints(timeout).count(requestBuilder.build()); - addLogFailureCallback(future, "Count"); - return Futures.transform( - future, response -> response.getResult().getCount(), MoreExecutors.directExecutor()); - } - - /** - * Universally query points. Covers all capabilities of search, recommend, discover, filters. Also - * enables hybrid and multi-stage queries. - * - * @param request the query request - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> queryAsync(QueryPoints request) { - return queryAsync(request, null); - } - - /** - * Universally query points. Covers all capabilities of search, recommend, discover, filters. Also - * enables hybrid and multi-stage queries. - * - * @param request the query request - * @param timeout the timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> queryAsync( - QueryPoints request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - - logger.debug("Query on '{}'", request.getCollectionName()); - ListenableFuture future = getPoints(timeout).query(request); - addLogFailureCallback(future, "Query"); - return Futures.transform(future, QueryResponse::getResultList, MoreExecutors.directExecutor()); - } - - /** - * Universally query points in batch. Covers all capabilities of search, recommend, discover, - * filters. Also enables hybrid and multi-stage queries. - * - * @param collectionName The name of the collection - * @param queries The queries to be performed in the batch. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> queryBatchAsync( - String collectionName, List queries) { - return queryBatchAsync(collectionName, queries, null, null); - } - - /** - * Universally query points in batch. Covers all capabilities of search, recommend, discover, - * filters. Also enables hybrid and multi-stage queries. - * - * @param collectionName The name of the collection - * @param queries The queries to be performed in the batch. - * @param readConsistency Options for specifying read consistency guarantees. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> queryBatchAsync( - String collectionName, List queries, @Nullable ReadConsistency readConsistency) { - return queryBatchAsync(collectionName, queries, readConsistency, null); - } - - /** - * Universally query points in batch. Covers all capabilities of search, recommend, discover, - * filters. Also enables hybrid and multi-stage queries. - * - * @param collectionName The name of the collection - * @param queries The queries to be performed in the batch. - * @param readConsistency Options for specifying read consistency guarantees. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> queryBatchAsync( - String collectionName, - List queries, - @Nullable ReadConsistency readConsistency, - @Nullable Duration timeout) { - QueryBatchPoints.Builder requestBuilder = - QueryBatchPoints.newBuilder().setCollectionName(collectionName).addAllQueryPoints(queries); - - if (readConsistency != null) { - requestBuilder.setReadConsistency(readConsistency); - } - - logger.debug("Query batch on '{}'", collectionName); - ListenableFuture future = - getPoints(timeout).queryBatch(requestBuilder.build()); - addLogFailureCallback(future, "Query batch"); - return Futures.transform( - future, QueryBatchResponse::getResultList, MoreExecutors.directExecutor()); - } - - /** - * Universally query points. Covers all capabilities of search, recommend, discover, filters. - * Grouped by a payload field. - * - * @param request the query request - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> queryGroupsAsync(QueryPointGroups request) { - return queryGroupsAsync(request, null); - } - - /** - * Universally query points. Covers all capabilities of search, recommend, discover, filters. - * Grouped by a payload field. - * - * @param request the query request - * @param timeout the timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> queryGroupsAsync( - QueryPointGroups request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - - logger.debug("Query groups on '{}'", request.getCollectionName()); - ListenableFuture future = getPoints(timeout).queryGroups(request); - addLogFailureCallback(future, "Query groups"); - return Futures.transform( - future, response -> response.getResult().getGroupsList(), MoreExecutors.directExecutor()); - } - - /** - * Perform facet counts. For each value in the field, count the number of points that have this - * value and match the conditions. - * - * @param request the facet counts request - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> facetAsync(Points.FacetCounts request) { - return facetAsync(request, null); - } - - /** - * Perform facet counts. For each value in the field, count the number of points that have this - * value and match the conditions. - * - * @param request the facet counts request - * @param timeout the timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> facetAsync( - Points.FacetCounts request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - - logger.debug("Facet on '{}'", request.getCollectionName()); - ListenableFuture future = getPoints(timeout).facet(request); - addLogFailureCallback(future, "Facet"); - return Futures.transform( - future, Points.FacetResponse::getHitsList, MoreExecutors.directExecutor()); - } - - // region distance matrix - - /** - * Compute distance matrix for sampled points with a pair based output format. - * - * @param request the search matrix pairs request - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture searchMatrixPairsAsync( - Points.SearchMatrixPoints request) { - return searchMatrixPairsAsync(request, null); - } - - /** - * Compute distance matrix for sampled points with a pair based output format. - * - * @param request the search matrix pairs request - * @param timeout the timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture searchMatrixPairsAsync( - Points.SearchMatrixPoints request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - - logger.debug("Search matrix pairs on '{}'", request.getCollectionName()); - ListenableFuture future = - getPoints(timeout).searchMatrixPairs(request); - addLogFailureCallback(future, "Search matrix pairs"); - return Futures.transform( - future, Points.SearchMatrixPairsResponse::getResult, MoreExecutors.directExecutor()); - } - - /** - * Compute distance matrix for sampled points with an offset based output format - * - * @param request the search matrix pairs request - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture searchMatrixOffsetsAsync( - Points.SearchMatrixPoints request) { - return searchMatrixOffsetsAsync(request, null); - } - - /** - * Compute distance matrix for sampled points with an offset based output format - * - * @param request the search matrix pairs request - * @param timeout the timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture searchMatrixOffsetsAsync( - Points.SearchMatrixPoints request, @Nullable Duration timeout) { - Preconditions.checkArgument( - !request.getCollectionName().isEmpty(), "Collection name must not be empty"); - - logger.debug("Search matrix offsets on '{}'", request.getCollectionName()); - ListenableFuture future = - getPoints(timeout).searchMatrixOffsets(request); - addLogFailureCallback(future, "Search matrix offsets"); - return Futures.transform( - future, Points.SearchMatrixOffsetsResponse::getResult, MoreExecutors.directExecutor()); - } - - // endregion - - // region Snapshot Management - - /** - * Create snapshot for a given collection. - * - * @param collectionName The name of the collection. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createSnapshotAsync(String collectionName) { - return createSnapshotAsync(collectionName, null); - } - - /** - * Create snapshot for a given collection. - * - * @param collectionName The name of the collection. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createSnapshotAsync( - String collectionName, @Nullable Duration timeout) { - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - logger.debug("Create snapshot of '{}'", collectionName); - ListenableFuture future = - getSnapshots(timeout) - .create(CreateSnapshotRequest.newBuilder().setCollectionName(collectionName).build()); - addLogFailureCallback(future, "Create snapshot"); - return Futures.transform( - future, CreateSnapshotResponse::getSnapshotDescription, MoreExecutors.directExecutor()); - } - - /** - * Get list of snapshots for a collection. - * - * @param collectionName The name of the collection. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> listSnapshotAsync(String collectionName) { - return listSnapshotAsync(collectionName, null); - } - - /** - * Get list of snapshots for a collection. - * - * @param collectionName The name of the collection. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> listSnapshotAsync( - String collectionName, @Nullable Duration timeout) { - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - logger.debug("List snapshots of '{}'", collectionName); - ListenableFuture future = - getSnapshots(timeout) - .list(ListSnapshotsRequest.newBuilder().setCollectionName(collectionName).build()); - addLogFailureCallback(future, "List snapshots"); - return Futures.transform( - future, ListSnapshotsResponse::getSnapshotDescriptionsList, MoreExecutors.directExecutor()); - } - - /** - * Delete snapshot for a given collection. - * - * @param collectionName The name of the collection. - * @param snapshotName The name of the snapshot. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteSnapshotAsync( - String collectionName, String snapshotName) { - return deleteSnapshotAsync(collectionName, snapshotName, null); - } - - /** - * Delete snapshot for a given collection. - * - * @param collectionName The name of the collection. - * @param snapshotName The name of the snapshot. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteSnapshotAsync( - String collectionName, String snapshotName, @Nullable Duration timeout) { - Preconditions.checkArgument(!collectionName.isEmpty(), "Collection name must not be empty"); - Preconditions.checkArgument(!snapshotName.isEmpty(), "Snapshot name must not be empty"); - logger.debug("Delete snapshot '{}' of '{}'", snapshotName, collectionName); - ListenableFuture future = - getSnapshots(timeout) - .delete( - DeleteSnapshotRequest.newBuilder() - .setCollectionName(collectionName) - .setSnapshotName(snapshotName) - .build()); - addLogFailureCallback(future, "Delete snapshot"); - return future; - } - - /** - * Create snapshot for a whole storage. - * - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createFullSnapshotAsync() { - return createFullSnapshotAsync(null); - } - - /** - * Create snapshot for a whole storage. - * - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture createFullSnapshotAsync(@Nullable Duration timeout) { - logger.debug("Create full snapshot for a whole storage"); - ListenableFuture future = - getSnapshots(timeout).createFull(CreateFullSnapshotRequest.getDefaultInstance()); - addLogFailureCallback(future, "Create full snapshot"); - return Futures.transform( - future, CreateSnapshotResponse::getSnapshotDescription, MoreExecutors.directExecutor()); - } - - /** - * Get list of snapshots for a whole storage. - * - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> listFullSnapshotAsync() { - return listFullSnapshotAsync(null); - } - - /** - * Get list of snapshots for a whole storage. - * - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture> listFullSnapshotAsync( - @Nullable Duration timeout) { - logger.debug("List full snapshots for a whole storage"); - ListenableFuture future = - getSnapshots(timeout).listFull(ListFullSnapshotsRequest.getDefaultInstance()); - addLogFailureCallback(future, "List full snapshots"); - return Futures.transform( - future, ListSnapshotsResponse::getSnapshotDescriptionsList, MoreExecutors.directExecutor()); - } - - /** - * Delete snapshot for a whole storage. - * - * @param snapshotName The name of the snapshot. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteFullSnapshotAsync(String snapshotName) { - return deleteFullSnapshotAsync(snapshotName, null); - } - - /** - * Delete snapshot for a whole storage. - * - * @param snapshotName The name of the snapshot. - * @param timeout The timeout for the call. - * @return a new instance of {@link ListenableFuture} - */ - public ListenableFuture deleteFullSnapshotAsync( - String snapshotName, @Nullable Duration timeout) { - Preconditions.checkArgument(!snapshotName.isEmpty(), "Snapshot name must not be empty"); - logger.debug("Delete full snapshot '{}'", snapshotName); - ListenableFuture future = - getSnapshots(timeout) - .deleteFull( - DeleteFullSnapshotRequest.newBuilder().setSnapshotName(snapshotName).build()); - addLogFailureCallback(future, "Delete full snapshot"); - return future; - } - - // endregion - - @Override - public void close() { - grpcClient.close(); - } - - private void addLogFailureCallback(ListenableFuture future, String message) { - Futures.addCallback( - future, - new FutureCallback() { - @Override - public void onSuccess(V result) {} - - @Override - public void onFailure(Throwable t) { - logger.error(message + " operation failed", t); - } - }, - MoreExecutors.directExecutor()); - } - - private CollectionsGrpc.CollectionsFutureStub getCollections(@Nullable Duration timeout) { - return timeout != null - ? this.grpcClient.collections().withDeadlineAfter(timeout.toMillis(), TimeUnit.MILLISECONDS) - : this.grpcClient.collections(); - } - - private PointsGrpc.PointsFutureStub getPoints(@Nullable Duration timeout) { - return timeout != null - ? this.grpcClient.points().withDeadlineAfter(timeout.toMillis(), TimeUnit.MILLISECONDS) - : this.grpcClient.points(); - } - - private SnapshotsGrpc.SnapshotsFutureStub getSnapshots(@Nullable Duration timeout) { - return timeout != null - ? this.grpcClient.snapshots().withDeadlineAfter(timeout.toMillis(), TimeUnit.MILLISECONDS) - : this.grpcClient.snapshots(); - } -} diff --git a/src/main/java/io/qdrant/client/QdrantException.java b/src/main/java/io/qdrant/client/QdrantException.java deleted file mode 100644 index 1fc51466..00000000 --- a/src/main/java/io/qdrant/client/QdrantException.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.qdrant.client; - -/** An exception when interacting with qdrant */ -public class QdrantException extends RuntimeException { - /** - * Instantiates a new instance of {@link QdrantException} - * - * @param message The exception message - */ - public QdrantException(String message) { - super(message); - } -} diff --git a/src/main/java/io/qdrant/client/QdrantGrpcClient.java b/src/main/java/io/qdrant/client/QdrantGrpcClient.java deleted file mode 100644 index 67a23d7f..00000000 --- a/src/main/java/io/qdrant/client/QdrantGrpcClient.java +++ /dev/null @@ -1,327 +0,0 @@ -package io.qdrant.client; - -import io.grpc.CallCredentials; -import io.grpc.Channel; -import io.grpc.ClientInterceptors; -import io.grpc.Deadline; -import io.grpc.ManagedChannel; -import io.grpc.ManagedChannelBuilder; -import io.qdrant.client.grpc.*; -import io.qdrant.client.grpc.CollectionsGrpc.CollectionsFutureStub; -import io.qdrant.client.grpc.PointsGrpc.PointsFutureStub; -import io.qdrant.client.grpc.QdrantGrpc.QdrantFutureStub; -import io.qdrant.client.grpc.SnapshotsGrpc.SnapshotsFutureStub; -import java.time.Duration; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import javax.annotation.Nullable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** Low-level gRPC client for qdrant vector database. */ -public class QdrantGrpcClient implements AutoCloseable { - private static final Logger logger = LoggerFactory.getLogger(QdrantGrpcClient.class); - @Nullable private final CallCredentials callCredentials; - private final ManagedChannel channel; - private final Channel interceptedChannel; - private final boolean shutdownChannelOnClose; - @Nullable private final Duration timeout; - - QdrantGrpcClient( - ManagedChannel channel, - boolean shutdownChannelOnClose, - @Nullable CallCredentials callCredentials, - @Nullable Duration timeout) { - this.callCredentials = callCredentials; - this.channel = channel; - this.interceptedChannel = - ClientInterceptors.intercept(channel, RequestHeaders.newInterceptor()); - this.shutdownChannelOnClose = shutdownChannelOnClose; - this.timeout = timeout; - } - - /** - * Creates a new builder to build a client. - * - * @param channel The channel for communication. This channel is not shutdown by the client and - * must be managed by the caller. - * @return a new instance of {@link Builder} - */ - public static Builder newBuilder(ManagedChannel channel) { - return new Builder(channel, false, true); - } - - /** - * Creates a new builder to build a client. - * - * @param channel The channel for communication. - * @param shutdownChannelOnClose Whether the channel is shutdown on client close. - * @return a new instance of {@link Builder} - */ - public static Builder newBuilder(ManagedChannel channel, boolean shutdownChannelOnClose) { - return new Builder(channel, shutdownChannelOnClose, true); - } - - /** - * Creates a new builder to build a client. - * - * @param channel The channel for communication. - * @param shutdownChannelOnClose Whether the channel is shutdown on client close. - * @param checkCompatibility Whether to check compatibility between client's and server's - * versions. - * @return a new instance of {@link Builder} - */ - public static Builder newBuilder( - ManagedChannel channel, boolean shutdownChannelOnClose, boolean checkCompatibility) { - return new Builder(channel, shutdownChannelOnClose, checkCompatibility); - } - - /** - * Creates a new builder to build a client. - * - * @param host The host to connect to. The default gRPC port 6334 is used. - * @return a new instance of {@link Builder} - */ - public static Builder newBuilder(String host) { - return new Builder(host, 6334, true, true); - } - - /** - * Creates a new builder to build a client. The client uses Transport Layer Security by default. - * - * @param host The host to connect to. - * @param port The port to connect to. - * @return a new instance of {@link Builder} - */ - public static Builder newBuilder(String host, int port) { - return new Builder(host, port, true, true); - } - - /** - * Creates a new builder to build a client. - * - * @param host The host to connect to. - * @param port The port to connect to. - * @param useTransportLayerSecurity Whether the client uses Transport Layer Security (TLS) to - * secure communications. Running without TLS should only be used for testing purposes. - * @return a new instance of {@link Builder} - */ - public static Builder newBuilder(String host, int port, boolean useTransportLayerSecurity) { - return new Builder(host, port, useTransportLayerSecurity, true); - } - - /** - * Creates a new builder to build a client. - * - * @param host The host to connect to. - * @param port The port to connect to. - * @param useTransportLayerSecurity Whether the client uses Transport Layer Security (TLS) to - * secure communications. Running without TLS should only be used for testing purposes. - * @param checkCompatibility Whether to check compatibility between client's and server's - * versions. - * @return a new instance of {@link Builder} - */ - public static Builder newBuilder( - String host, int port, boolean useTransportLayerSecurity, boolean checkCompatibility) { - return new Builder(host, port, useTransportLayerSecurity, checkCompatibility); - } - - /** - * Gets the channel - * - * @return the channel - */ - public ManagedChannel channel() { - return channel; - } - - /** - * Gets the client for qdrant services - * - * @return a new instance of {@link QdrantFutureStub} - */ - public QdrantGrpc.QdrantFutureStub qdrant() { - return QdrantGrpc.newFutureStub(interceptedChannel) - .withCallCredentials(callCredentials) - .withDeadline( - timeout != null ? Deadline.after(timeout.toMillis(), TimeUnit.MILLISECONDS) : null); - } - - /** - * Gets the client for points - * - * @return a new instance of {@link PointsFutureStub} - */ - public PointsFutureStub points() { - return PointsGrpc.newFutureStub(interceptedChannel) - .withCallCredentials(callCredentials) - .withDeadline( - timeout != null ? Deadline.after(timeout.toMillis(), TimeUnit.MILLISECONDS) : null); - } - - /** - * Gets the client for collections - * - * @return a new instance of {@link CollectionsFutureStub} - */ - public CollectionsFutureStub collections() { - return CollectionsGrpc.newFutureStub(interceptedChannel) - .withCallCredentials(callCredentials) - .withDeadline( - timeout != null ? Deadline.after(timeout.toMillis(), TimeUnit.MILLISECONDS) : null); - } - - /** - * Gets the client for snapshots - * - * @return a new instance of {@link SnapshotsFutureStub} - */ - public SnapshotsFutureStub snapshots() { - return SnapshotsGrpc.newFutureStub(interceptedChannel) - .withCallCredentials(callCredentials) - .withDeadline( - timeout != null ? Deadline.after(timeout.toMillis(), TimeUnit.MILLISECONDS) : null); - } - - @Override - public void close() { - if (shutdownChannelOnClose && !channel.isShutdown() && !channel.isTerminated()) { - try { - channel.shutdown().awaitTermination(5, TimeUnit.SECONDS); - } catch (InterruptedException e) { - logger.warn("exception thrown when shutting down channel", e); - } - } - } - - /** builder for {@link QdrantGrpcClient} */ - public static class Builder { - private final ManagedChannel channel; - private final boolean shutdownChannelOnClose; - private final boolean checkCompatibility; - @Nullable private String apiKey; - @Nullable private CallCredentials callCredentials; - @Nullable private Duration timeout; - @Nullable private Map headers; - - Builder(ManagedChannel channel, boolean shutdownChannelOnClose, boolean checkCompatibility) { - this.channel = channel; - this.shutdownChannelOnClose = shutdownChannelOnClose; - this.checkCompatibility = checkCompatibility; - } - - Builder(String host, int port, boolean useTransportLayerSecurity, boolean checkCompatibility) { - String clientVersion = Builder.class.getPackage().getImplementationVersion(); - String javaVersion = System.getProperty("java.version"); - String userAgent = "java-client/" + clientVersion + " java/" + javaVersion; - this.channel = createChannel(host, port, useTransportLayerSecurity, userAgent); - this.shutdownChannelOnClose = true; - this.checkCompatibility = checkCompatibility; - } - - /** - * Sets the API key to use for authentication - * - * @param apiKey The API key to use. - * @return this - */ - public Builder withApiKey(String apiKey) { - this.apiKey = apiKey; - return this; - } - - /** - * Sets a default timeout for all requests. - * - * @param timeout The timeout. - * @return this - */ - public Builder withTimeout(@Nullable Duration timeout) { - this.timeout = timeout; - return this; - } - - /** - * Sets the credential data that will be propagated to the server via request metadata for each - * RPC. - * - *

    Note: If both {@link #withApiKey(String)} / {@link #withHeaders(Map)} and this method are - * used, this method takes precedence and the API key and headers will be ignored. - * - * @param callCredentials The call credentials to use. - * @return this - */ - public Builder withCallCredentials(@Nullable CallCredentials callCredentials) { - this.callCredentials = callCredentials; - return this; - } - - /** - * Sets custom headers to send with every gRPC request. - * - * @param headers The headers to send. - * @return this - */ - public Builder withHeaders(Map headers) { - this.headers = headers; - return this; - } - - /** - * Builds a new instance of {@link QdrantGrpcClient} - * - * @return a new instance of {@link QdrantGrpcClient} - */ - public QdrantGrpcClient build() { - if (checkCompatibility) { - String clientVersion = Builder.class.getPackage().getImplementationVersion(); - checkVersionsCompatibility(clientVersion); - } - - CallCredentials credentials = this.callCredentials; - if (credentials == null && (apiKey != null || headers != null)) { - credentials = new MetadataCredentials(apiKey, headers); - } - - return new QdrantGrpcClient(channel, shutdownChannelOnClose, credentials, timeout); - } - - private static ManagedChannel createChannel( - String host, int port, boolean useTransportLayerSecurity, String userAgent) { - ManagedChannelBuilder channelBuilder = ManagedChannelBuilder.forAddress(host, port); - - if (useTransportLayerSecurity) { - channelBuilder.useTransportSecurity(); - } else { - channelBuilder.usePlaintext(); - } - - channelBuilder.userAgent(userAgent); - - return channelBuilder.build(); - } - - private void checkVersionsCompatibility(String clientVersion) { - try { - String serverVersion = - QdrantGrpc.newBlockingStub(this.channel) - .withCallCredentials(this.callCredentials) - .healthCheck(QdrantOuterClass.HealthCheckRequest.getDefaultInstance()) - .getVersion(); - if (!VersionsCompatibilityChecker.isCompatible(clientVersion, serverVersion)) { - String logMessage = - "Qdrant client version " - + clientVersion - + " is incompatible with server version " - + serverVersion - + ". Major versions should match and minor version difference must not exceed 1. " - + "Set checkCompatibility=false to skip version check."; - logger.warn(logMessage); - } - } catch (Exception e) { - logger.warn( - "Failed to obtain server version. Unable to check client-server compatibility. Set checkCompatibility=false to skip version check."); - } - } - } -} diff --git a/src/main/java/io/qdrant/client/QueryFactory.java b/src/main/java/io/qdrant/client/QueryFactory.java deleted file mode 100644 index 12d5f0d9..00000000 --- a/src/main/java/io/qdrant/client/QueryFactory.java +++ /dev/null @@ -1,268 +0,0 @@ -package io.qdrant.client; - -import static io.qdrant.client.VectorInputFactory.multiVectorInput; -import static io.qdrant.client.VectorInputFactory.vectorInput; - -import io.qdrant.client.grpc.Common.PointId; -import io.qdrant.client.grpc.Points.ContextInput; -import io.qdrant.client.grpc.Points.DiscoverInput; -import io.qdrant.client.grpc.Points.Document; -import io.qdrant.client.grpc.Points.Formula; -import io.qdrant.client.grpc.Points.Fusion; -import io.qdrant.client.grpc.Points.Image; -import io.qdrant.client.grpc.Points.InferenceObject; -import io.qdrant.client.grpc.Points.Mmr; -import io.qdrant.client.grpc.Points.NearestInputWithMmr; -import io.qdrant.client.grpc.Points.OrderBy; -import io.qdrant.client.grpc.Points.Query; -import io.qdrant.client.grpc.Points.RecommendInput; -import io.qdrant.client.grpc.Points.RelevanceFeedbackInput; -import io.qdrant.client.grpc.Points.Rrf; -import io.qdrant.client.grpc.Points.Sample; -import io.qdrant.client.grpc.Points.VectorInput; -import java.util.List; -import java.util.UUID; - -/** Convenience methods for constructing {@link Query} */ -public final class QueryFactory { - private QueryFactory() {} - - /** - * Creates a {@link Query} for recommendation. - * - * @param input An instance of {@link RecommendInput} - * @return a new instance of {@link Query} - */ - public static Query recommend(RecommendInput input) { - return Query.newBuilder().setRecommend(input).build(); - } - - /** - * Creates a {@link Query} for discovery. - * - * @param input An instance of {@link DiscoverInput} - * @return a new instance of {@link Query} - */ - public static Query discover(DiscoverInput input) { - return Query.newBuilder().setDiscover(input).build(); - } - - /** - * Creates a {@link Query} for context search. - * - * @param input An instance of {@link ContextInput} - * @return a new instance of {@link Query} - */ - public static Query context(ContextInput input) { - return Query.newBuilder().setContext(input).build(); - } - - /** - * Creates a {@link Query} for pre-fetch results fusion. - * - * @param fusion An instance of {@link Fusion} - * @return a new instance of {@link Query} - */ - public static Query fusion(Fusion fusion) { - return Query.newBuilder().setFusion(fusion).build(); - } - - /** - * Creates a {@link Query} for reciprocal rank fusion (RRF). - * - * @param rrf An instance of {@link Rrf} - * @return a new instance of {@link Query} - */ - public static Query rrf(Rrf rrf) { - return Query.newBuilder().setRrf(rrf).build(); - } - - /** - * Creates a {@link Query} to order points by a payload field. - * - * @param key Name of the payload field to order by - * @return a new instance of {@link Query} - */ - public static Query orderBy(String key) { - OrderBy orderBy = OrderBy.newBuilder().setKey(key).build(); - return Query.newBuilder().setOrderBy(orderBy).build(); - } - - /** - * Creates a {@link Query} to order points by a payload field. - * - * @param orderBy An instance of {@link OrderBy} - * @return a new instance of {@link Query} - */ - public static Query orderBy(OrderBy orderBy) { - return Query.newBuilder().setOrderBy(orderBy).build(); - } - - /** - * Creates a {@link Query} for score boosting using an arbitrary formula. - * - * @param formula An instance of {@link Formula} - * @return a new instance of {@link Query} - */ - public static Query formula(Formula formula) { - return Query.newBuilder().setFormula(formula).build(); - } - - // region Nearest search queries - - /** - * Creates a {@link Query} for nearest search. - * - * @param input An instance of {@link VectorInput} - * @return a new instance of {@link Query} - */ - public static Query nearest(VectorInput input) { - return Query.newBuilder().setNearest(input).build(); - } - - /** - * Creates a {@link Query} from a list of floats - * - * @param values A map of vector names to values - * @return A new instance of {@link Query} - */ - public static Query nearest(List values) { - return Query.newBuilder().setNearest(vectorInput(values)).build(); - } - - /** - * Creates a {@link Query} from a list of floats - * - * @param values A list of values - * @return A new instance of {@link Query} - */ - public static Query nearest(float... values) { - return Query.newBuilder().setNearest(vectorInput(values)).build(); - } - - /** - * Creates a {@link Query} from a list of floats and integers as indices - * - * @param values The list of floats representing the vector. - * @param indices The list of integers representing the indices. - * @return A new instance of {@link Query} - */ - public static Query nearest(List values, List indices) { - return Query.newBuilder().setNearest(vectorInput(values, indices)).build(); - } - - /** - * Creates a {@link Query} from a nested array of floats representing a multi vector - * - * @param vectors The nested array of floats. - * @return A new instance of {@link Query} - */ - public static Query nearest(float[][] vectors) { - return Query.newBuilder().setNearest(multiVectorInput(vectors)).build(); - } - - /** - * Creates a {@link Query} from a {@link long} - * - * @param id The point id - * @return a new instance of {@link Query} - */ - public static Query nearest(long id) { - return Query.newBuilder().setNearest(vectorInput(id)).build(); - } - - /** - * Creates a {@link Query} from a {@link UUID} - * - * @param id The point id - * @return a new instance of {@link Query} - */ - public static Query nearest(UUID id) { - return Query.newBuilder().setNearest(vectorInput(id)).build(); - } - - /** - * Creates a {@link Query} from a {@link PointId} - * - * @param id The point id - * @return a new instance of {@link Query} - */ - public static Query nearest(PointId id) { - return Query.newBuilder().setNearest(vectorInput(id)).build(); - } - - /** - * Creates a {@link Query} from a {@link Document} - * - * @param document The document to vectorize and query against. - * @return a new instance of {@link Query} - */ - public static Query nearest(Document document) { - return Query.newBuilder().setNearest(vectorInput(document)).build(); - } - - /** - * Creates a {@link Query} from an image for cloud inference. - * - * @param image The image to vectorize and query against. - * @return a new instance of {@link Query} - */ - public static Query nearest(Image image) { - return Query.newBuilder().setNearest(vectorInput(image)).build(); - } - - /** - * Creates a {@link Query} from an {@link InferenceObject} - * - * @param object The inference object to vectorize and query against. - * @return a new instance of {@link Query} - */ - public static Query nearest(InferenceObject object) { - return Query.newBuilder().setNearest(vectorInput(object)).build(); - } - - /** - * Creates a {@link Query} for re-ranking points with MMR (Maximum Marginal Relevance). - * - * @param nearest The vector input for nearest search. - * @param mmr The MMR configuration. - * @return a new instance of {@link Query} - */ - public static Query nearest(VectorInput nearest, Mmr mmr) { - return Query.newBuilder() - .setNearestWithMmr(NearestInputWithMmr.newBuilder().setNearest(nearest).setMmr(mmr).build()) - .build(); - } - - /** - * Creates a {@link Query} from a nested list of floats representing a multi vector - * - * @param vectors The nested list of floats. - * @return A new instance of {@link Query} - */ - public static Query nearestMultiVector(List> vectors) { - return Query.newBuilder().setNearest(multiVectorInput(vectors)).build(); - } - - /** - * Creates a {@link Query} for sampling. - * - * @param sample An instance of {@link Sample} - * @return A new instance of {@link Query} - */ - public static Query sample(Sample sample) { - return Query.newBuilder().setSample(sample).build(); - } - - /** - * Creates a {@link Query} for search with feedback from some oracle. - * - * @param relevanceFeedback An instance of {@link RelevanceFeedbackInput} - * @return A new instance of {@link Query} - */ - public static Query relevanceFeedback(RelevanceFeedbackInput relevanceFeedback) { - return Query.newBuilder().setRelevanceFeedback(relevanceFeedback).build(); - } - - // endregion -} diff --git a/src/main/java/io/qdrant/client/RequestHeaders.java b/src/main/java/io/qdrant/client/RequestHeaders.java deleted file mode 100644 index 0aa32ff3..00000000 --- a/src/main/java/io/qdrant/client/RequestHeaders.java +++ /dev/null @@ -1,85 +0,0 @@ -package io.qdrant.client; - -import io.grpc.CallOptions; -import io.grpc.Channel; -import io.grpc.ClientCall; -import io.grpc.ClientInterceptor; -import io.grpc.Context; -import io.grpc.ForwardingClientCall; -import io.grpc.Metadata; -import io.grpc.MethodDescriptor; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** - * Utilities for attaching per-request headers to gRPC calls. - * - *

    {@code
    - * Context ctx = RequestHeaders.withHeader(Context.current(), "x-request-id", "abc-123");
    - * ctx.run(() -> client.listCollectionsAsync());
    - * }
    - */ -public final class RequestHeaders { - - static final Context.Key> HEADERS_KEY = Context.key("qdrant-request-headers"); - - private RequestHeaders() {} - - /** - * Returns a new {@link Context} that carries key/value as a gRPC metadata header on every request - * started within that context. - * - * @param ctx the parent context - * @param key the header name - * @param value the header value - * @return a child context with the header attached - */ - public static Context withHeader(Context ctx, String key, String value) { - return withHeaders(ctx, Collections.singletonMap(key, value)); - } - - /** - * Returns a new {@link Context} that carries all entries of headers as gRPC metadata on every - * request started within that context. - * - * @param ctx the parent context - * @param headers the headers to attach - * @return a child context with the headers attached - */ - public static Context withHeaders(Context ctx, Map headers) { - if (headers == null || headers.isEmpty()) { - return ctx; - } - Map merged = new HashMap<>(); - Map current = HEADERS_KEY.get(ctx); - if (current != null) merged.putAll(current); - merged.putAll(headers); - return ctx.withValue(HEADERS_KEY, merged); - } - - /** Returns a {@link ClientInterceptor} that injects per-request headers from the context. */ - static ClientInterceptor newInterceptor() { - return new ClientInterceptor() { - @Override - public ClientCall interceptCall( - MethodDescriptor method, CallOptions callOptions, Channel next) { - return new ForwardingClientCall.SimpleForwardingClientCall( - next.newCall(method, callOptions)) { - @Override - public void start(Listener responseListener, Metadata headers) { - Map extra = HEADERS_KEY.get(); - if (extra != null) { - for (Map.Entry entry : extra.entrySet()) { - headers.put( - Metadata.Key.of(entry.getKey(), Metadata.ASCII_STRING_MARSHALLER), - entry.getValue()); - } - } - super.start(responseListener, headers); - } - }; - } - }; - } -} diff --git a/src/main/java/io/qdrant/client/ShardKeyFactory.java b/src/main/java/io/qdrant/client/ShardKeyFactory.java deleted file mode 100644 index ecb8c53f..00000000 --- a/src/main/java/io/qdrant/client/ShardKeyFactory.java +++ /dev/null @@ -1,28 +0,0 @@ -package io.qdrant.client; - -import io.qdrant.client.grpc.Collections.ShardKey; - -/** Convenience methods for constructing {@link ShardKey} */ -public final class ShardKeyFactory { - private ShardKeyFactory() {} - - /** - * Creates a {@link ShardKey} based on a keyword. - * - * @param keyword The keyword to create the shard key from - * @return The {@link ShardKey} object - */ - public static ShardKey shardKey(String keyword) { - return ShardKey.newBuilder().setKeyword(keyword).build(); - } - - /** - * Creates a {@link ShardKey} based on a number. - * - * @param number The number to create the shard key from - * @return The {@link ShardKey} object - */ - public static ShardKey shardKey(long number) { - return ShardKey.newBuilder().setNumber(number).build(); - } -} diff --git a/src/main/java/io/qdrant/client/ShardKeySelectorFactory.java b/src/main/java/io/qdrant/client/ShardKeySelectorFactory.java deleted file mode 100644 index 5e6d18c1..00000000 --- a/src/main/java/io/qdrant/client/ShardKeySelectorFactory.java +++ /dev/null @@ -1,50 +0,0 @@ -package io.qdrant.client; - -import static io.qdrant.client.ShardKeyFactory.shardKey; - -import io.qdrant.client.grpc.Collections.ShardKey; -import io.qdrant.client.grpc.Points.ShardKeySelector; -import java.util.Arrays; - -/** Convenience methods for constructing {@link ShardKeySelector} */ -public class ShardKeySelectorFactory { - private ShardKeySelectorFactory() {} - - /** - * Creates a {@link ShardKeySelector} with the given shard keys. - * - * @param shardKeys The shard keys to include in the selector. - * @return The created {@link ShardKeySelector} object. - */ - public static ShardKeySelector shardKeySelector(ShardKey... shardKeys) { - return ShardKeySelector.newBuilder().addAllShardKeys(Arrays.asList(shardKeys)).build(); - } - - /** - * Creates a {@link ShardKeySelector} with the given shard key keywords. - * - * @param keywords The shard key keywords to include in the selector. - * @return The created {@link ShardKeySelector} object. - */ - public static ShardKeySelector shardKeySelector(String... keywords) { - ShardKeySelector.Builder builder = ShardKeySelector.newBuilder(); - for (String keyword : keywords) { - builder.addShardKeys(shardKey(keyword)); - } - return builder.build(); - } - - /** - * Creates a {@link ShardKeySelector} with the given shard key numbers. - * - * @param numbers The shard key numbers to include in the selector. - * @return The created {@link ShardKeySelector} object. - */ - public static ShardKeySelector shardKeySelector(long... numbers) { - ShardKeySelector.Builder builder = ShardKeySelector.newBuilder(); - for (long number : numbers) { - builder.addShardKeys(shardKey(number)); - } - return builder.build(); - } -} diff --git a/src/main/java/io/qdrant/client/StartFromFactory.java b/src/main/java/io/qdrant/client/StartFromFactory.java deleted file mode 100644 index c36f56b6..00000000 --- a/src/main/java/io/qdrant/client/StartFromFactory.java +++ /dev/null @@ -1,62 +0,0 @@ -package io.qdrant.client; - -import com.google.protobuf.Timestamp; -import io.qdrant.client.grpc.Points.StartFrom; -import java.time.Instant; - -/** Convenience methods for constructing {@link StartFrom} */ -public final class StartFromFactory { - private StartFromFactory() {} - - /** - * Creates a {@link StartFrom} value from a {@link float} - * - * @param value The value - * @return a new instance of {@link StartFrom} - */ - public static StartFrom startFrom(float value) { - return StartFrom.newBuilder().setFloat(value).build(); - } - - /** - * Creates a {@link StartFrom} value from a {@link int} - * - * @param value The value - * @return a new instance of {@link StartFrom} - */ - public static StartFrom startFrom(int value) { - return StartFrom.newBuilder().setInteger(value).build(); - } - - /** - * Creates a {@link StartFrom} value from a {@link String} timestamp - * - * @param value The value - * @return a new instance of {@link StartFrom} - */ - public static StartFrom startFrom(String value) { - return StartFrom.newBuilder().setDatetime(value).build(); - } - - /** - * Creates a {@link StartFrom} value from a {@link Timestamp} - * - * @param value The value - * @return a new instance of {@link StartFrom} - */ - public static StartFrom startFrom(Timestamp value) { - return StartFrom.newBuilder().setTimestamp(value).build(); - } - - /** - * Creates a {@link StartFrom} value from a {@link Timestamp} - * - * @param value The value - * @return a new instance of {@link StartFrom} - */ - public static StartFrom startFrom(Instant value) { - return StartFrom.newBuilder() - .setTimestamp(Timestamp.newBuilder().setSeconds(value.getEpochSecond())) - .build(); - } -} diff --git a/src/main/java/io/qdrant/client/TargetVectorFactory.java b/src/main/java/io/qdrant/client/TargetVectorFactory.java deleted file mode 100644 index 04cc83cd..00000000 --- a/src/main/java/io/qdrant/client/TargetVectorFactory.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.qdrant.client; - -import io.qdrant.client.grpc.Common.PointId; -import io.qdrant.client.grpc.Points.TargetVector; -import io.qdrant.client.grpc.Points.Vector; -import io.qdrant.client.grpc.Points.VectorExample; - -/** Convenience methods for constructing {@link TargetVector} */ -public class TargetVectorFactory { - private TargetVectorFactory() {} - - /** - * Creates a TargetVector from a point ID - * - * @param id The point ID to use - * @return A new instance of {@link TargetVector} - */ - public static TargetVector targetVector(PointId id) { - return TargetVector.newBuilder().setSingle(VectorExample.newBuilder().setId(id)).build(); - } - - /** - * Creates a TargetVector from a Vector - * - * @param vector The Vector value to use - * @return A new instance of {@link TargetVector} - */ - public static TargetVector targetVector(Vector vector) { - return TargetVector.newBuilder() - .setSingle(VectorExample.newBuilder().setVector(vector)) - .build(); - } -} diff --git a/src/main/java/io/qdrant/client/ValueFactory.java b/src/main/java/io/qdrant/client/ValueFactory.java deleted file mode 100644 index de16f89f..00000000 --- a/src/main/java/io/qdrant/client/ValueFactory.java +++ /dev/null @@ -1,96 +0,0 @@ -package io.qdrant.client; - -import io.qdrant.client.grpc.JsonWithInt.ListValue; -import io.qdrant.client.grpc.JsonWithInt.NullValue; -import io.qdrant.client.grpc.JsonWithInt.Struct; -import io.qdrant.client.grpc.JsonWithInt.Value; -import java.util.List; -import java.util.Map; - -/** Convenience methods for constructing {@link Value} */ -public final class ValueFactory { - private ValueFactory() {} - - /** - * Creates a value from a {@link String} - * - * @param value The value - * @return a new instance of {@link io.qdrant.client.grpc.JsonWithInt.Value} - */ - public static Value value(String value) { - return Value.newBuilder().setStringValue(value).build(); - } - - /** - * Creates a value from a {@link long} - * - * @param value The value - * @return a new instance of {@link io.qdrant.client.grpc.JsonWithInt.Value} - */ - public static Value value(long value) { - return Value.newBuilder().setIntegerValue(value).build(); - } - - /** - * Creates a value from a {@link double} - * - * @param value The value - * @return a new instance of {@link io.qdrant.client.grpc.JsonWithInt.Value} - */ - public static Value value(double value) { - return Value.newBuilder().setDoubleValue(value).build(); - } - - /** - * Creates a value from a {@link boolean} - * - * @param value The value - * @return a new instance of {@link io.qdrant.client.grpc.JsonWithInt.Value} - */ - public static Value value(boolean value) { - return Value.newBuilder().setBoolValue(value).build(); - } - - /** - * Creates a null value - * - * @return a new instance of {@link io.qdrant.client.grpc.JsonWithInt.Value} - */ - public static Value nullValue() { - return Value.newBuilder().setNullValue(NullValue.NULL_VALUE).build(); - } - - /** - * Creates a value from a list of values - * - * @param values The list of values - * @return a new instance of {@link io.qdrant.client.grpc.JsonWithInt.Value} - */ - public static Value list(List values) { - return Value.newBuilder() - .setListValue(ListValue.newBuilder().addAllValues(values).build()) - .build(); - } - - /** - * Creates a value from a list of values. Same as {@link #list(List)} - * - * @param values The list of values - * @return a new instance of {@link io.qdrant.client.grpc.JsonWithInt.Value} - */ - public static Value value(List values) { - return list(values); - } - - /** - * Creates a value from a map of nested values - * - * @param values The map of values - * @return a new instance of {@link io.qdrant.client.grpc.JsonWithInt.Value} - */ - public static Value value(Map values) { - return Value.newBuilder() - .setStructValue(Struct.newBuilder().putAllFields(values).build()) - .build(); - } -} diff --git a/src/main/java/io/qdrant/client/VectorFactory.java b/src/main/java/io/qdrant/client/VectorFactory.java deleted file mode 100644 index dfde007a..00000000 --- a/src/main/java/io/qdrant/client/VectorFactory.java +++ /dev/null @@ -1,117 +0,0 @@ -package io.qdrant.client; - -import com.google.common.primitives.Floats; -import io.qdrant.client.grpc.Points.DenseVector; -import io.qdrant.client.grpc.Points.Document; -import io.qdrant.client.grpc.Points.Image; -import io.qdrant.client.grpc.Points.InferenceObject; -import io.qdrant.client.grpc.Points.MultiDenseVector; -import io.qdrant.client.grpc.Points.SparseVector; -import io.qdrant.client.grpc.Points.Vector; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -/** Convenience methods for constructing {@link Vector} */ -public final class VectorFactory { - private VectorFactory() {} - - /** - * Creates a vector from a list of floats - * - * @param values A map of vector names to values - * @return A new instance of {@link Vector} - */ - public static Vector vector(List values) { - return Vector.newBuilder() - .setDense(DenseVector.newBuilder().addAllData(values).build()) - .build(); - } - - /** - * Creates a vector from a list of floats - * - * @param values A list of values - * @return A new instance of {@link Vector} - */ - public static Vector vector(float... values) { - return Vector.newBuilder() - .setDense(DenseVector.newBuilder().addAllData(Floats.asList(values)).build()) - .build(); - } - - /** - * Creates a sparse vector from a list of floats and integers as indices - * - * @param vector The list of floats representing the vector. - * @param indices The list of integers representing the indices. - * @return A new instance of {@link Vector} - */ - public static Vector vector(List vector, List indices) { - return Vector.newBuilder() - .setSparse(SparseVector.newBuilder().addAllValues(vector).addAllIndices(indices).build()) - .build(); - } - - /** - * Creates a vector from a document for cloud inference. - * - * @param document The document to vectorize. - * @return A new instance of {@link Vector} - */ - public static Vector vector(Document document) { - return Vector.newBuilder().setDocument(document).build(); - } - - /** - * Creates a vector from an image for cloud inference. - * - * @param image The image to vectorize. - * @return A new instance of {@link Vector} - */ - public static Vector vector(Image image) { - return Vector.newBuilder().setImage(image).build(); - } - - /** - * Creates a vector from an inference object. - * - * @param object The inference object to vectorize. - * @return A new instance of {@link Vector} - */ - public static Vector vector(InferenceObject object) { - return Vector.newBuilder().setObject(object).build(); - } - - /** - * Creates a multi vector from a nested list of floats - * - * @param vectors The nested list of floats representing the multi vector. - * @return A new instance of {@link Vector} - */ - public static Vector multiVector(List> vectors) { - List denseVectors = - vectors.stream() - .map(v -> DenseVector.newBuilder().addAllData(v).build()) - .collect(Collectors.toList()); - return Vector.newBuilder() - .setMultiDense(MultiDenseVector.newBuilder().addAllVectors(denseVectors).build()) - .build(); - } - - /** - * Creates a multi vector from a nested array of floats - * - * @param vectors The nested array of floats representing the multi vector. - * @return A new instance of {@link Vector} - */ - public static Vector multiVector(float[][] vectors) { - List denseVectors = new ArrayList<>(); - for (float[] vector : vectors) { - denseVectors.add(DenseVector.newBuilder().addAllData(Floats.asList(vector)).build()); - } - return Vector.newBuilder() - .setMultiDense(MultiDenseVector.newBuilder().addAllVectors(denseVectors).build()) - .build(); - } -} diff --git a/src/main/java/io/qdrant/client/VectorInputFactory.java b/src/main/java/io/qdrant/client/VectorInputFactory.java deleted file mode 100644 index e41dafd7..00000000 --- a/src/main/java/io/qdrant/client/VectorInputFactory.java +++ /dev/null @@ -1,149 +0,0 @@ -package io.qdrant.client; - -import static io.qdrant.client.PointIdFactory.id; - -import com.google.common.primitives.Floats; -import io.qdrant.client.grpc.Common.PointId; -import io.qdrant.client.grpc.Points.DenseVector; -import io.qdrant.client.grpc.Points.Document; -import io.qdrant.client.grpc.Points.Image; -import io.qdrant.client.grpc.Points.InferenceObject; -import io.qdrant.client.grpc.Points.MultiDenseVector; -import io.qdrant.client.grpc.Points.SparseVector; -import io.qdrant.client.grpc.Points.VectorInput; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; -import java.util.stream.Collectors; - -/** Convenience methods for constructing {@link VectorInput} */ -public final class VectorInputFactory { - private VectorInputFactory() {} - - /** - * Creates a {@link VectorInput} from a list of floats - * - * @param values A map of vector names to values - * @return A new instance of {@link VectorInput} - */ - public static VectorInput vectorInput(List values) { - return VectorInput.newBuilder().setDense(DenseVector.newBuilder().addAllData(values)).build(); - } - - /** - * Creates a {@link VectorInput} from a list of floats - * - * @param values A list of values - * @return A new instance of {@link VectorInput} - */ - public static VectorInput vectorInput(float... values) { - return VectorInput.newBuilder() - .setDense(DenseVector.newBuilder().addAllData(Floats.asList(values))) - .build(); - } - - /** - * Creates a {@link VectorInput} from a list of floats and integers as indices - * - * @param vector The list of floats representing the vector. - * @param indices The list of integers representing the indices. - * @return A new instance of {@link VectorInput} - */ - public static VectorInput vectorInput(List vector, List indices) { - return VectorInput.newBuilder() - .setSparse(SparseVector.newBuilder().addAllValues(vector).addAllIndices(indices).build()) - .build(); - } - - /** - * Creates a {@link VectorInput} from a nested list of floats representing a multi vector - * - * @param vectors The nested list of floats. - * @return A new instance of {@link VectorInput} - */ - public static VectorInput multiVectorInput(List> vectors) { - List denseVectors = - vectors.stream() - .map(v -> DenseVector.newBuilder().addAllData(v).build()) - .collect(Collectors.toList()); - return VectorInput.newBuilder() - .setMultiDense(MultiDenseVector.newBuilder().addAllVectors(denseVectors).build()) - .build(); - } - - /** - * Creates a {@link VectorInput} from a nested array of floats representing a multi vector - * - * @param vectors The nested array of floats. - * @return A new instance of {@link VectorInput} - */ - public static VectorInput multiVectorInput(float[][] vectors) { - List denseVectors = new ArrayList<>(); - for (float[] vector : vectors) { - denseVectors.add(DenseVector.newBuilder().addAllData(Floats.asList(vector)).build()); - } - return VectorInput.newBuilder() - .setMultiDense(MultiDenseVector.newBuilder().addAllVectors(denseVectors).build()) - .build(); - } - - /** - * Creates a {@link VectorInput} from a {@link long} - * - * @param id The point id - * @return a new instance of {@link VectorInput} - */ - public static VectorInput vectorInput(long id) { - return VectorInput.newBuilder().setId(id(id)).build(); - } - - /** - * Creates a {@link VectorInput} from a {@link UUID} - * - * @param id The point id - * @return a new instance of {@link VectorInput} - */ - public static VectorInput vectorInput(UUID id) { - return VectorInput.newBuilder().setId(id(id)).build(); - } - - /** - * Creates a {@link VectorInput} from a {@link PointId} - * - * @param id The point id - * @return a new instance of {@link VectorInput} - */ - public static VectorInput vectorInput(PointId id) { - return VectorInput.newBuilder().setId(id).build(); - } - - /** - * Creates a {@link VectorInput} from a {@link Document} - * - * @param document An instance of {@link Document} - * @return a new instance of {@link VectorInput} - */ - public static VectorInput vectorInput(Document document) { - return VectorInput.newBuilder().setDocument(document).build(); - } - - /** - * Creates a {@link VectorInput} from a an {@link Image} - * - * @param image An instance of {@link Image} - * @return a new instance of {@link VectorInput} - */ - public static VectorInput vectorInput(Image image) { - return VectorInput.newBuilder().setImage(image).build(); - } - - /** - * Creates a {@link VectorInput} from a {@link InferenceObject} - * - * @param object An instance of {@link InferenceObject} - * @return a new instance of {@link VectorInput} - */ - public static VectorInput vectorInput(InferenceObject object) { - return VectorInput.newBuilder().setObject(object).build(); - } -} diff --git a/src/main/java/io/qdrant/client/VectorOutputHelper.java b/src/main/java/io/qdrant/client/VectorOutputHelper.java deleted file mode 100644 index 87531de2..00000000 --- a/src/main/java/io/qdrant/client/VectorOutputHelper.java +++ /dev/null @@ -1,103 +0,0 @@ -package io.qdrant.client; - -import io.qdrant.client.grpc.Points.DenseVector; -import io.qdrant.client.grpc.Points.MultiDenseVector; -import io.qdrant.client.grpc.Points.SparseIndices; -import io.qdrant.client.grpc.Points.SparseVector; -import io.qdrant.client.grpc.Points.VectorOutput; -import java.util.ArrayList; -import java.util.List; - -/** Helper methods for extracting vector data from {@link VectorOutput}. */ -public final class VectorOutputHelper { - private VectorOutputHelper() {} - - /** - * Returns the DenseVector from the VectorOutput. - * - * @param vectorOutput the VectorOutput to extract from - * @return the DenseVector if available, null otherwise - */ - public static DenseVector getDenseVector(VectorOutput vectorOutput) { - if (vectorOutput == null) { - return null; - } - - List data = vectorOutput.getDataList(); - if (!data.isEmpty()) { - return DenseVector.newBuilder().addAllData(data).build(); - } - - if (vectorOutput.hasDense()) { - return vectorOutput.getDense(); - } - - return null; - } - - /** - * Returns the SparseVector from the VectorOutput. - * - * @param vectorOutput the VectorOutput to extract from - * @return the SparseVector if available, null otherwise - */ - public static SparseVector getSparseVector(VectorOutput vectorOutput) { - if (vectorOutput == null) { - return null; - } - - List data = vectorOutput.getDataList(); - if (!data.isEmpty()) { - if (vectorOutput.hasIndices()) { - SparseIndices indices = vectorOutput.getIndices(); - return SparseVector.newBuilder() - .addAllValues(data) - .addAllIndices(indices.getDataList()) - .build(); - } - } - - if (vectorOutput.hasSparse()) { - return vectorOutput.getSparse(); - } - - return null; - } - - /** - * Returns the MultiDenseVector from the VectorOutput. - * - * @param vectorOutput the VectorOutput to extract from - * @return the MultiDenseVector if available, null otherwise - */ - public static MultiDenseVector getMultiVector(VectorOutput vectorOutput) { - if (vectorOutput == null) { - return null; - } - - List data = vectorOutput.getDataList(); - if (!data.isEmpty()) { - int vectorsCount = vectorOutput.getVectorsCount(); - if (vectorsCount > 0) { - int vectorSize = data.size() / vectorsCount; - List vectors = new ArrayList<>(vectorsCount); - - for (int i = 0; i < vectorsCount; i++) { - int start = i * vectorSize; - int end = start + vectorSize; - List vectorData = data.subList(start, end); - - vectors.add(DenseVector.newBuilder().addAllData(vectorData).build()); - } - - return MultiDenseVector.newBuilder().addAllVectors(vectors).build(); - } - } - - if (vectorOutput.hasMultiDense()) { - return vectorOutput.getMultiDense(); - } - - return null; - } -} diff --git a/src/main/java/io/qdrant/client/VectorsFactory.java b/src/main/java/io/qdrant/client/VectorsFactory.java deleted file mode 100644 index 9fce93f3..00000000 --- a/src/main/java/io/qdrant/client/VectorsFactory.java +++ /dev/null @@ -1,87 +0,0 @@ -package io.qdrant.client; - -import static io.qdrant.client.VectorFactory.vector; - -import io.qdrant.client.grpc.Points.Document; -import io.qdrant.client.grpc.Points.Image; -import io.qdrant.client.grpc.Points.InferenceObject; -import io.qdrant.client.grpc.Points.NamedVectors; -import io.qdrant.client.grpc.Points.Vector; -import io.qdrant.client.grpc.Points.Vectors; -import java.util.List; -import java.util.Map; - -/** Convenience methods for constructing {@link Vectors} */ -public final class VectorsFactory { - private VectorsFactory() {} - - /** - * Creates named vectors - * - * @param values A map of vector names to {@link Vector} - * @return a new instance of {@link Vectors} - */ - public static Vectors namedVectors(Map values) { - return Vectors.newBuilder().setVectors(NamedVectors.newBuilder().putAllVectors(values)).build(); - } - - /** - * Creates a vector - * - * @param values A list of values - * @return a new instance of {@link Vectors} - */ - public static Vectors vectors(List values) { - return Vectors.newBuilder().setVector(vector(values)).build(); - } - - /** - * Creates a vector - * - * @param values A list of values - * @return a new instance of {@link Vectors} - */ - public static Vectors vectors(float... values) { - return Vectors.newBuilder().setVector(vector(values)).build(); - } - - /** - * Creates a vector - * - * @param vector An instance of {@link Vector} - * @return a new instance of {@link Vectors} - */ - public static Vectors vectors(Vector vector) { - return Vectors.newBuilder().setVector(vector).build(); - } - - /** - * Creates an instance of {@link Vectors} from a document for cloud inference. - * - * @param document An instance of {@link Document} - * @return a new instance of {@link Vectors} - */ - public static Vectors vectors(Document document) { - return Vectors.newBuilder().setVector(vector(document)).build(); - } - - /** - * Creates an instance of {@link Vectors} from an image for cloud inference. - * - * @param image An instance of {@link Image} - * @return a new instance of {@link Vectors} - */ - public static Vectors vectors(Image image) { - return Vectors.newBuilder().setVector(vector(image)).build(); - } - - /** - * Creates an instance of {@link Vectors} from an inference object. - * - * @param object The inference object to vectorize. - * @return A new instance of {@link Vectors} - */ - public static Vectors vectors(InferenceObject object) { - return Vectors.newBuilder().setVector(vector(object)).build(); - } -} diff --git a/src/main/java/io/qdrant/client/VersionsCompatibilityChecker.java b/src/main/java/io/qdrant/client/VersionsCompatibilityChecker.java deleted file mode 100644 index 7ae733b8..00000000 --- a/src/main/java/io/qdrant/client/VersionsCompatibilityChecker.java +++ /dev/null @@ -1,68 +0,0 @@ -package io.qdrant.client; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -class Version { - private final int major; - private final int minor; - - public Version(int major, int minor) { - this.major = major; - this.minor = minor; - } - - public int getMajor() { - return major; - } - - public int getMinor() { - return minor; - } -} - -/** Utility class to check compatibility between server's and client's versions. */ -public class VersionsCompatibilityChecker { - private static final Logger logger = LoggerFactory.getLogger(VersionsCompatibilityChecker.class); - - /** Default constructor. */ - public VersionsCompatibilityChecker() {} - - private static Version parseVersion(String version) throws IllegalArgumentException { - if (version.isEmpty()) { - throw new IllegalArgumentException("Version is None"); - } - - try { - String[] parts = version.split("\\."); - int major = parts.length > 0 ? Integer.parseInt(parts[0]) : 0; - int minor = parts.length > 1 ? Integer.parseInt(parts[1]) : 0; - - return new Version(major, minor); - } catch (Exception e) { - throw new IllegalArgumentException( - "Unable to parse version, expected format: x.y[.z], found: " + version, e); - } - } - - /** - * Compares server's and client's versions. - * - * @param clientVersion The client's version. - * @param serverVersion The server's version. - * @return True if the versions are compatible, false otherwise. - */ - public static boolean isCompatible(String clientVersion, String serverVersion) { - try { - Version client = parseVersion(clientVersion); - Version server = parseVersion(serverVersion); - - if (client.getMajor() != server.getMajor()) return false; - return Math.abs(client.getMinor() - server.getMinor()) <= 1; - - } catch (IllegalArgumentException e) { - logger.warn("Version comparison failed: {}", e.getMessage()); - return false; - } - } -} diff --git a/src/main/java/io/qdrant/client/WithPayloadSelectorFactory.java b/src/main/java/io/qdrant/client/WithPayloadSelectorFactory.java deleted file mode 100644 index bbc2f64a..00000000 --- a/src/main/java/io/qdrant/client/WithPayloadSelectorFactory.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.qdrant.client; - -import io.qdrant.client.grpc.Points.PayloadExcludeSelector; -import io.qdrant.client.grpc.Points.PayloadIncludeSelector; -import io.qdrant.client.grpc.Points.WithPayloadSelector; -import java.util.List; - -/** Convenience methods for constructing {@link WithPayloadSelector} */ -public final class WithPayloadSelectorFactory { - private WithPayloadSelectorFactory() {} - - /** - * Whether to include all payload in response. - * - * @param enable if true, to include all payload, if false, none. - * @return a new instance of {@link WithPayloadSelector} - */ - public static WithPayloadSelector enable(boolean enable) { - return WithPayloadSelector.newBuilder().setEnable(enable).build(); - } - - /** - * Which payload fields to include in response. - * - * @param fields the list of fields to include. - * @return a new instance of {@link WithPayloadSelector} - */ - public static WithPayloadSelector include(List fields) { - return WithPayloadSelector.newBuilder() - .setInclude(PayloadIncludeSelector.newBuilder().addAllFields(fields).build()) - .build(); - } - - /** - * Which payload fields to exclude in response. - * - * @param fields the list of fields to exclude. - * @return a new instance of {@link WithPayloadSelector} - */ - public static WithPayloadSelector exclude(List fields) { - return WithPayloadSelector.newBuilder() - .setExclude(PayloadExcludeSelector.newBuilder().addAllFields(fields).build()) - .build(); - } -} diff --git a/src/main/java/io/qdrant/client/WithVectorsSelectorFactory.java b/src/main/java/io/qdrant/client/WithVectorsSelectorFactory.java deleted file mode 100644 index 6f098ebe..00000000 --- a/src/main/java/io/qdrant/client/WithVectorsSelectorFactory.java +++ /dev/null @@ -1,32 +0,0 @@ -package io.qdrant.client; - -import io.qdrant.client.grpc.Points; -import io.qdrant.client.grpc.Points.WithVectorsSelector; -import java.util.List; - -/** Convenience methods for constructing {@link WithVectorsSelector} */ -public final class WithVectorsSelectorFactory { - private WithVectorsSelectorFactory() {} - - /** - * Whether to include vectors in response. - * - * @param enable if true, to include vectors, if false, none. - * @return a new instance of {@link WithVectorsSelector} - */ - public static WithVectorsSelector enable(boolean enable) { - return WithVectorsSelector.newBuilder().setEnable(enable).build(); - } - - /** - * List of named vectors to include in response. - * - * @param names The names of vectors. - * @return a new instance of {@link WithVectorsSelector} - */ - public static WithVectorsSelector include(List names) { - return WithVectorsSelector.newBuilder() - .setInclude(Points.VectorsSelector.newBuilder().addAllNames(names)) - .build(); - } -} diff --git a/src/main/java/io/qdrant/client/package-info.java b/src/main/java/io/qdrant/client/package-info.java deleted file mode 100644 index f126f0a6..00000000 --- a/src/main/java/io/qdrant/client/package-info.java +++ /dev/null @@ -1,5 +0,0 @@ -/** package */ -@ParametersAreNonnullByDefault -package io.qdrant.client; - -import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/test/java/io/qdrant/client/ApiKeyTest.java b/src/test/java/io/qdrant/client/ApiKeyTest.java deleted file mode 100644 index 3174fbb7..00000000 --- a/src/test/java/io/qdrant/client/ApiKeyTest.java +++ /dev/null @@ -1,71 +0,0 @@ -package io.qdrant.client; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import io.grpc.Grpc; -import io.grpc.InsecureChannelCredentials; -import io.grpc.ManagedChannel; -import io.grpc.Status; -import io.grpc.StatusRuntimeException; -import io.qdrant.client.grpc.Collections.ListCollectionsRequest; -import io.qdrant.client.grpc.Collections.ListCollectionsResponse; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.qdrant.QdrantContainer; - -@Testcontainers -public class ApiKeyTest { - @Container - private static final QdrantContainer QDRANT_CONTAINER = - new QdrantContainer(DockerImage.QDRANT_IMAGE) - .withEnv("QDRANT__SERVICE__API_KEY", "password!"); - - private ManagedChannel channel; - - @BeforeEach - public void setup() { - channel = - Grpc.newChannelBuilder( - QDRANT_CONTAINER.getGrpcHostAddress(), InsecureChannelCredentials.create()) - .build(); - } - - @AfterEach - public void teardown() throws InterruptedException { - channel.shutdownNow().awaitTermination(5, TimeUnit.SECONDS); - } - - @Test - public void client_with_api_key_can_connect() throws ExecutionException, InterruptedException { - ListCollectionsResponse listCollectionsResponse; - try (QdrantGrpcClient grpcClient = - QdrantGrpcClient.newBuilder(channel).withApiKey("password!").build()) { - listCollectionsResponse = - grpcClient.collections().list(ListCollectionsRequest.getDefaultInstance()).get(); - } - - assertNotNull(listCollectionsResponse.getCollectionsList()); - } - - @Test - public void client_without_api_key_cannot_connect() { - try (QdrantGrpcClient grpcClient = QdrantGrpcClient.newBuilder(channel).build()) { - ExecutionException executionException = - assertThrows( - ExecutionException.class, - () -> - grpcClient.collections().list(ListCollectionsRequest.getDefaultInstance()).get()); - Throwable cause = executionException.getCause(); - assertEquals(StatusRuntimeException.class, cause.getClass()); - StatusRuntimeException statusRuntimeException = (StatusRuntimeException) cause; - assertEquals(Status.Code.UNAUTHENTICATED, statusRuntimeException.getStatus().getCode()); - } - } -} diff --git a/src/test/java/io/qdrant/client/CollectionsTest.java b/src/test/java/io/qdrant/client/CollectionsTest.java deleted file mode 100644 index ea772716..00000000 --- a/src/test/java/io/qdrant/client/CollectionsTest.java +++ /dev/null @@ -1,319 +0,0 @@ -package io.qdrant.client; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import io.grpc.Grpc; -import io.grpc.InsecureChannelCredentials; -import io.grpc.ManagedChannel; -import io.grpc.Status; -import io.grpc.StatusRuntimeException; -import io.qdrant.client.grpc.Collections; -import io.qdrant.client.grpc.Collections.AliasDescription; -import io.qdrant.client.grpc.Collections.CollectionInfo; -import io.qdrant.client.grpc.Collections.CollectionStatus; -import io.qdrant.client.grpc.Collections.CreateCollection; -import io.qdrant.client.grpc.Collections.Distance; -import io.qdrant.client.grpc.Collections.VectorParams; -import io.qdrant.client.grpc.Collections.VectorsConfig; -import io.qdrant.client.grpc.Points.CreateVectorNameRequest; -import io.qdrant.client.grpc.Points.DeleteVectorNameRequest; -import io.qdrant.client.grpc.Points.DenseVectorCreationConfig; -import java.util.Comparator; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInfo; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.qdrant.QdrantContainer; - -@Testcontainers -class CollectionsTest { - @Container - private static final QdrantContainer QDRANT_CONTAINER = - new QdrantContainer(DockerImage.QDRANT_IMAGE); - - private QdrantClient client; - private ManagedChannel channel; - private String testName; - - private static CreateCollection getCreateCollection(String collectionName) { - return CreateCollection.newBuilder() - .setCollectionName(collectionName) - .setVectorsConfig( - VectorsConfig.newBuilder() - .setParams( - VectorParams.newBuilder().setDistance(Distance.Cosine).setSize(4).build()) - .build()) - .build(); - } - - @BeforeEach - public void setup(TestInfo testInfo) { - testName = testInfo.getDisplayName().replace("()", ""); - channel = - Grpc.newChannelBuilder( - QDRANT_CONTAINER.getGrpcHostAddress(), InsecureChannelCredentials.create()) - .build(); - QdrantGrpcClient grpcClient = QdrantGrpcClient.newBuilder(channel).build(); - client = new QdrantClient(grpcClient); - } - - @AfterEach - public void teardown() throws Exception { - List collectionNames = client.listCollectionsAsync().get(); - for (String collectionName : collectionNames) { - client.deleteCollectionAsync(collectionName).get(); - } - client.close(); - channel.shutdownNow().awaitTermination(5, TimeUnit.SECONDS); - } - - @Test - void createCollection() throws ExecutionException, InterruptedException { - client - .createCollectionAsync( - testName, VectorParams.newBuilder().setDistance(Distance.Cosine).setSize(4).build()) - .get(); - - List collections = client.listCollectionsAsync().get(); - assertTrue(collections.contains(testName)); - } - - @Test - void createCollection_for_existing_collection() throws ExecutionException, InterruptedException { - CreateCollection createCollection = getCreateCollection(testName); - client.createCollectionAsync(createCollection).get(); - - ExecutionException exception = - assertThrows( - ExecutionException.class, () -> client.createCollectionAsync(createCollection).get()); - assertEquals(StatusRuntimeException.class, exception.getCause().getClass()); - } - - @Test - void createCollection_with_no_collection_name() { - CreateCollection createCollection = - CreateCollection.newBuilder() - .setVectorsConfig( - VectorsConfig.newBuilder() - .setParams( - VectorParams.newBuilder().setDistance(Distance.Cosine).setSize(4).build()) - .build()) - .build(); - - assertThrows( - IllegalArgumentException.class, () -> client.createCollectionAsync(createCollection).get()); - } - - @Test - public void recreateCollection() throws ExecutionException, InterruptedException { - CreateCollection createCollection = getCreateCollection(testName); - client.createCollectionAsync(createCollection).get(); - client.recreateCollectionAsync(createCollection).get(); - - List collections = client.listCollectionsAsync().get(); - assertTrue(collections.contains(testName)); - } - - @Test - public void updateCollection() throws ExecutionException, InterruptedException { - CreateCollection createCollection = getCreateCollection(testName); - client.createCollectionAsync(createCollection).get(); - client - .updateCollectionAsync( - Collections.UpdateCollection.newBuilder() - .setCollectionName(testName) - .setVectorsConfig( - Collections.VectorsConfigDiff.newBuilder() - .setParams( - Collections.VectorParamsDiff.newBuilder().setOnDisk(false).build()) - .build()) - .build()) - .get(); - } - - @Test - public void updateCollection_with_no_changes() throws ExecutionException, InterruptedException { - CreateCollection createCollection = getCreateCollection(testName); - client.createCollectionAsync(createCollection).get(); - client - .updateCollectionAsync( - Collections.UpdateCollection.newBuilder().setCollectionName(testName).build()) - .get(); - } - - @Test - public void deleteCollection() throws ExecutionException, InterruptedException { - CreateCollection createCollection = getCreateCollection(testName); - client.createCollectionAsync(createCollection).get(); - client.deleteCollectionAsync(testName).get(); - - List collections = client.listCollectionsAsync().get(); - assertTrue(collections.isEmpty()); - } - - @Test - public void deleteCollection_with_missing_collection() { - ExecutionException exception = - assertThrows(ExecutionException.class, () -> client.deleteCollectionAsync(testName).get()); - Throwable cause = exception.getCause(); - assertEquals(QdrantException.class, cause.getClass()); - } - - @Test - public void getCollectionInfo() throws ExecutionException, InterruptedException { - CreateCollection createCollection = getCreateCollection(testName); - client.createCollectionAsync(createCollection).get(); - CollectionInfo collectionInfo = client.getCollectionInfoAsync(testName).get(); - assertEquals(CollectionStatus.Green, collectionInfo.getStatus()); - } - - @Test - public void getCollectionInfo_with_missing_collection() { - ExecutionException exception = - assertThrows(ExecutionException.class, () -> client.getCollectionInfoAsync(testName).get()); - Throwable cause = exception.getCause(); - assertEquals(StatusRuntimeException.class, cause.getClass()); - StatusRuntimeException underlyingException = (StatusRuntimeException) cause; - assertEquals(Status.Code.NOT_FOUND, underlyingException.getStatus().getCode()); - } - - @Test - public void collectionExists() throws ExecutionException, InterruptedException { - assertFalse(client.collectionExistsAsync(testName).get()); - - CreateCollection createCollection = getCreateCollection(testName); - client.createCollectionAsync(createCollection).get(); - assertTrue(client.collectionExistsAsync(testName).get()); - - client.deleteCollectionAsync(testName).get(); - assertFalse(client.collectionExistsAsync(testName).get()); - } - - @Test - public void createAlias() throws ExecutionException, InterruptedException { - CreateCollection createCollection = getCreateCollection(testName); - client.createCollectionAsync(createCollection).get(); - client.createAliasAsync("alias_1", testName).get(); - } - - @Test - public void listAliases() throws ExecutionException, InterruptedException { - CreateCollection createCollection = getCreateCollection(testName); - client.createCollectionAsync(createCollection).get(); - client.createAliasAsync("alias_1", testName).get(); - client.createAliasAsync("alias_2", testName).get(); - - List aliasDescriptions = client.listAliasesAsync().get(); - - List sorted = - aliasDescriptions.stream() - .sorted(Comparator.comparing(AliasDescription::getAliasName)) - .collect(Collectors.toList()); - - assertEquals(2, sorted.size()); - assertEquals("alias_1", sorted.get(0).getAliasName()); - assertEquals(testName, sorted.get(0).getCollectionName()); - assertEquals("alias_2", sorted.get(1).getAliasName()); - assertEquals(testName, sorted.get(1).getCollectionName()); - } - - @Test - public void listCollectionAliases() throws ExecutionException, InterruptedException { - CreateCollection createCollection = getCreateCollection(testName); - client.createCollectionAsync(createCollection).get(); - client.createAliasAsync("alias_1", testName).get(); - client.createAliasAsync("alias_2", testName).get(); - - List aliases = client.listCollectionAliasesAsync(testName).get(); - - List sorted = aliases.stream().sorted().collect(Collectors.toList()); - - assertEquals(2, sorted.size()); - assertEquals("alias_1", sorted.get(0)); - assertEquals("alias_2", sorted.get(1)); - } - - @Test - public void renameAlias() throws ExecutionException, InterruptedException { - CreateCollection createCollection = getCreateCollection(testName); - client.createCollectionAsync(createCollection).get(); - client.createAliasAsync("alias_1", testName).get(); - client.renameAliasAsync("alias_1", "alias_2").get(); - - List aliases = client.listCollectionAliasesAsync(testName).get(); - - List sorted = aliases.stream().sorted().collect(Collectors.toList()); - - assertEquals(1, sorted.size()); - assertEquals("alias_2", sorted.get(0)); - } - - @Test - public void deleteAlias() throws ExecutionException, InterruptedException { - CreateCollection createCollection = getCreateCollection(testName); - client.createCollectionAsync(createCollection).get(); - client.createAliasAsync("alias_1", testName).get(); - client.deleteAliasAsync("alias_1").get(); - - List aliases = client.listCollectionAliasesAsync(testName).get(); - assertTrue(aliases.isEmpty()); - } - - @Test - public void createAndDeleteVector() throws ExecutionException, InterruptedException { - CreateCollection createCollection = getCreateCollection(testName); - client.createCollectionAsync(createCollection).get(); - - client - .createVectorNameAsync( - CreateVectorNameRequest.newBuilder() - .setCollectionName(testName) - .setVectorName("vector_1") - .setDenseConfig( - DenseVectorCreationConfig.newBuilder() - .setSize(8) - .setDistance(Distance.Cosine) - .build()) - .setWait(true) - .build()) - .get(); - - assertTrue( - client - .getCollectionInfoAsync(testName) - .get() - .getConfig() - .getParams() - .getVectorsConfig() - .getParamsMap() - .containsMap("vector_1")); - - client - .deleteVectorNameAsync( - DeleteVectorNameRequest.newBuilder() - .setCollectionName(testName) - .setVectorName("vector_1") - .setWait(true) - .build()) - .get(); - - assertFalse( - client - .getCollectionInfoAsync(testName) - .get() - .getConfig() - .getParams() - .getVectorsConfig() - .getParamsMap() - .containsMap("vector_1")); - } -} diff --git a/src/test/java/io/qdrant/client/DockerImage.java b/src/test/java/io/qdrant/client/DockerImage.java deleted file mode 100644 index c8996179..00000000 --- a/src/test/java/io/qdrant/client/DockerImage.java +++ /dev/null @@ -1,6 +0,0 @@ -package io.qdrant.client; - -public class DockerImage { - - public static final String QDRANT_IMAGE = "qdrant/qdrant:" + System.getProperty("qdrantVersion"); -} diff --git a/src/test/java/io/qdrant/client/HealthTest.java b/src/test/java/io/qdrant/client/HealthTest.java deleted file mode 100644 index c385cfdf..00000000 --- a/src/test/java/io/qdrant/client/HealthTest.java +++ /dev/null @@ -1,49 +0,0 @@ -package io.qdrant.client; - -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import io.grpc.Grpc; -import io.grpc.InsecureChannelCredentials; -import io.grpc.ManagedChannel; -import io.qdrant.client.grpc.QdrantOuterClass.HealthCheckReply; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.qdrant.QdrantContainer; - -@Testcontainers -class HealthTest { - @Container - private static final QdrantContainer QDRANT_CONTAINER = - new QdrantContainer(DockerImage.QDRANT_IMAGE); - - private QdrantClient client; - private ManagedChannel channel; - - @BeforeEach - public void setup() { - channel = - Grpc.newChannelBuilder( - QDRANT_CONTAINER.getGrpcHostAddress(), InsecureChannelCredentials.create()) - .build(); - QdrantGrpcClient grpcClient = QdrantGrpcClient.newBuilder(channel).build(); - client = new QdrantClient(grpcClient); - } - - @AfterEach - public void teardown() throws Exception { - client.close(); - channel.shutdownNow().awaitTermination(5, TimeUnit.SECONDS); - } - - @Test - public void healthCheck() throws ExecutionException, InterruptedException { - HealthCheckReply healthCheckReply = client.healthCheckAsync().get(); - assertNotNull(healthCheckReply.getTitle()); - assertNotNull(healthCheckReply.getVersion()); - } -} diff --git a/src/test/java/io/qdrant/client/PointsTest.java b/src/test/java/io/qdrant/client/PointsTest.java deleted file mode 100644 index 3828854a..00000000 --- a/src/test/java/io/qdrant/client/PointsTest.java +++ /dev/null @@ -1,931 +0,0 @@ -package io.qdrant.client; - -import static io.qdrant.client.ConditionFactory.hasId; -import static io.qdrant.client.ConditionFactory.matchKeyword; -import static io.qdrant.client.PointIdFactory.id; -import static io.qdrant.client.QueryFactory.fusion; -import static io.qdrant.client.QueryFactory.nearest; -import static io.qdrant.client.QueryFactory.orderBy; -import static io.qdrant.client.QueryFactory.sample; -import static io.qdrant.client.TargetVectorFactory.targetVector; -import static io.qdrant.client.ValueFactory.value; -import static io.qdrant.client.VectorFactory.vector; -import static io.qdrant.client.VectorsFactory.vectors; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import io.grpc.Grpc; -import io.grpc.InsecureChannelCredentials; -import io.grpc.ManagedChannel; -import io.qdrant.client.grpc.Collections; -import io.qdrant.client.grpc.Collections.CollectionInfo; -import io.qdrant.client.grpc.Collections.CreateCollection; -import io.qdrant.client.grpc.Collections.Distance; -import io.qdrant.client.grpc.Collections.PayloadSchemaType; -import io.qdrant.client.grpc.Collections.VectorParams; -import io.qdrant.client.grpc.Collections.VectorsConfig; -import io.qdrant.client.grpc.Common.Filter; -import io.qdrant.client.grpc.Points; -import io.qdrant.client.grpc.Points.BatchResult; -import io.qdrant.client.grpc.Points.DiscoverPoints; -import io.qdrant.client.grpc.Points.Fusion; -import io.qdrant.client.grpc.Points.PointGroup; -import io.qdrant.client.grpc.Points.PointStruct; -import io.qdrant.client.grpc.Points.PointVectors; -import io.qdrant.client.grpc.Points.PointsIdsList; -import io.qdrant.client.grpc.Points.PointsSelector; -import io.qdrant.client.grpc.Points.PointsUpdateOperation; -import io.qdrant.client.grpc.Points.PointsUpdateOperation.ClearPayload; -import io.qdrant.client.grpc.Points.PointsUpdateOperation.UpdateVectors; -import io.qdrant.client.grpc.Points.PrefetchQuery; -import io.qdrant.client.grpc.Points.QueryPointGroups; -import io.qdrant.client.grpc.Points.QueryPoints; -import io.qdrant.client.grpc.Points.RecommendPointGroups; -import io.qdrant.client.grpc.Points.RecommendPoints; -import io.qdrant.client.grpc.Points.RetrievedPoint; -import io.qdrant.client.grpc.Points.Sample; -import io.qdrant.client.grpc.Points.ScoredPoint; -import io.qdrant.client.grpc.Points.ScrollPoints; -import io.qdrant.client.grpc.Points.ScrollResponse; -import io.qdrant.client.grpc.Points.SearchPointGroups; -import io.qdrant.client.grpc.Points.SearchPoints; -import io.qdrant.client.grpc.Points.UpdateResult; -import io.qdrant.client.grpc.Points.UpdateStatus; -import io.qdrant.client.grpc.Points.VectorsOutput; -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInfo; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.qdrant.QdrantContainer; -import org.testcontainers.shaded.com.google.common.collect.ImmutableList; -import org.testcontainers.shaded.com.google.common.collect.ImmutableMap; -import org.testcontainers.shaded.com.google.common.collect.ImmutableSet; - -@Testcontainers -class PointsTest { - @Container - private static final QdrantContainer QDRANT_CONTAINER = - new QdrantContainer(DockerImage.QDRANT_IMAGE); - - private QdrantClient client; - private ManagedChannel channel; - private String testName; - - @BeforeEach - public void setup(TestInfo testInfo) { - testName = testInfo.getDisplayName().replace("()", ""); - channel = - Grpc.newChannelBuilder( - QDRANT_CONTAINER.getGrpcHostAddress(), InsecureChannelCredentials.create()) - .build(); - QdrantGrpcClient grpcClient = QdrantGrpcClient.newBuilder(channel).build(); - client = new QdrantClient(grpcClient); - } - - @AfterEach - public void teardown() throws Exception { - List collectionNames = client.listCollectionsAsync().get(); - for (String collectionName : collectionNames) { - client.deleteCollectionAsync(collectionName).get(); - } - client.close(); - channel.shutdownNow().awaitTermination(5, TimeUnit.SECONDS); - } - - @Test - public void retrieve() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List points = client.retrieveAsync(testName, id(9), null).get(); - - assertEquals(1, points.size()); - RetrievedPoint point = points.get(0); - assertEquals(id(9), point.getId()); - assertEquals(ImmutableSet.of("foo", "bar", "date"), point.getPayloadMap().keySet()); - assertEquals(value("goodbye"), point.getPayloadMap().get("foo")); - assertEquals(value(2), point.getPayloadMap().get("bar")); - assertEquals(VectorsOutput.getDefaultInstance(), point.getVectors()); - } - - @Test - public void retrieve_with_vector_without_payload() - throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List points = client.retrieveAsync(testName, id(8), false, true, null).get(); - - assertEquals(1, points.size()); - RetrievedPoint point = points.get(0); - assertEquals(id(8), point.getId()); - assertTrue(point.getPayloadMap().isEmpty()); - assertEquals( - VectorsOutput.VectorsOptionsCase.VECTOR, point.getVectors().getVectorsOptionsCase()); - } - - @Test - public void setPayload() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - client - .setPayloadAsync( - testName, ImmutableMap.of("bar", value("some bar")), id(9), null, null, null) - .get(); - - List points = client.retrieveAsync(testName, id(9), null).get(); - - assertEquals(1, points.size()); - RetrievedPoint point = points.get(0); - assertEquals(id(9), point.getId()); - assertEquals(ImmutableSet.of("foo", "bar", "date"), point.getPayloadMap().keySet()); - assertEquals(value("some bar"), point.getPayloadMap().get("bar")); - assertEquals(value("goodbye"), point.getPayloadMap().get("foo")); - } - - @Test - public void overwritePayload() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - client - .overwritePayloadAsync( - testName, ImmutableMap.of("bar", value("some bar")), id(9), null, null, null) - .get(); - - List points = client.retrieveAsync(testName, id(9), null).get(); - - assertEquals(1, points.size()); - RetrievedPoint point = points.get(0); - assertEquals(id(9), point.getId()); - assertEquals(ImmutableSet.of("bar"), point.getPayloadMap().keySet()); - assertEquals(value("some bar"), point.getPayloadMap().get("bar")); - } - - @Test - public void deletePayload() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - client - .setPayloadAsync( - testName, ImmutableMap.of("bar", value("some bar")), id(9), null, null, null) - .get(); - - client.deletePayloadAsync(testName, ImmutableList.of("foo"), id(9), null, null, null).get(); - - List points = client.retrieveAsync(testName, id(9), null).get(); - - assertEquals(1, points.size()); - RetrievedPoint point = points.get(0); - assertEquals(id(9), point.getId()); - assertEquals(ImmutableSet.of("bar", "date"), point.getPayloadMap().keySet()); - assertEquals(value("some bar"), point.getPayloadMap().get("bar")); - } - - @Test - public void clearPayload() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - client.clearPayloadAsync(testName, id(9), true, null, null).get(); - - List points = client.retrieveAsync(testName, id(9), null).get(); - - assertEquals(1, points.size()); - RetrievedPoint point = points.get(0); - assertEquals(id(9), point.getId()); - assertTrue(point.getPayloadMap().isEmpty()); - } - - @Test - public void createFieldIndex() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - UpdateResult result = - client - .createPayloadIndexAsync( - testName, "foo", PayloadSchemaType.Keyword, null, null, null, null) - .get(); - - assertEquals(UpdateStatus.Completed, result.getStatus()); - - result = - client - .createPayloadIndexAsync( - testName, "bar", PayloadSchemaType.Integer, null, null, null, null) - .get(); - - assertEquals(UpdateStatus.Completed, result.getStatus()); - - CollectionInfo collectionInfo = client.getCollectionInfoAsync(testName).get(); - assertEquals(ImmutableSet.of("foo", "bar"), collectionInfo.getPayloadSchemaMap().keySet()); - assertEquals( - PayloadSchemaType.Keyword, collectionInfo.getPayloadSchemaMap().get("foo").getDataType()); - assertEquals( - PayloadSchemaType.Integer, collectionInfo.getPayloadSchemaMap().get("bar").getDataType()); - } - - @Test - public void createDatetimeFieldIndex() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - UpdateResult result = - client - .createPayloadIndexAsync( - testName, "date", PayloadSchemaType.Datetime, null, null, null, null) - .get(); - - assertEquals(UpdateStatus.Completed, result.getStatus()); - - CollectionInfo collectionInfo = client.getCollectionInfoAsync(testName).get(); - assertEquals(ImmutableSet.of("date"), collectionInfo.getPayloadSchemaMap().keySet()); - assertEquals( - PayloadSchemaType.Datetime, collectionInfo.getPayloadSchemaMap().get("date").getDataType()); - } - - @Test - public void deleteFieldIndex() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - UpdateResult result = - client - .createPayloadIndexAsync( - testName, "foo", PayloadSchemaType.Keyword, null, null, null, null) - .get(); - assertEquals(UpdateStatus.Completed, result.getStatus()); - - result = client.deletePayloadIndexAsync(testName, "foo", null, null, null).get(); - assertEquals(UpdateStatus.Completed, result.getStatus()); - } - - @Test - public void search() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List points = - client - .searchAsync( - SearchPoints.newBuilder() - .setCollectionName(testName) - .setWithPayload(WithPayloadSelectorFactory.enable(true)) - .addAllVector(ImmutableList.of(10.4f, 11.4f)) - .setLimit(1) - .build()) - .get(); - - assertEquals(1, points.size()); - ScoredPoint point = points.get(0); - assertEquals(id(9), point.getId()); - assertEquals(ImmutableSet.of("foo", "bar", "date"), point.getPayloadMap().keySet()); - assertEquals(value("goodbye"), point.getPayloadMap().get("foo")); - assertEquals(value(2), point.getPayloadMap().get("bar")); - assertFalse(point.getVectors().hasVector()); - } - - @Test - public void searchBatch() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List batchResults = - client - .searchBatchAsync( - testName, - ImmutableList.of( - SearchPoints.newBuilder() - .addAllVector(ImmutableList.of(10.4f, 11.4f)) - .setLimit(1) - .build(), - SearchPoints.newBuilder() - .addAllVector(ImmutableList.of(3.4f, 4.4f)) - .setLimit(1) - .build()), - null) - .get(); - - assertEquals(2, batchResults.size()); - BatchResult result = batchResults.get(0); - assertEquals(1, result.getResultCount()); - assertEquals(id(9), result.getResult(0).getId()); - result = batchResults.get(1); - assertEquals(1, result.getResultCount()); - assertEquals(id(8), result.getResult(0).getId()); - } - - @Test - public void searchGroups() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - client - .upsertAsync( - testName, - ImmutableList.of( - PointStruct.newBuilder() - .setId(id(10)) - .setVectors(VectorsFactory.vectors(30f, 31f)) - .putAllPayload(ImmutableMap.of("foo", value("hello"))) - .build())) - .get(); - - List groups = - client - .searchGroupsAsync( - SearchPointGroups.newBuilder() - .setCollectionName(testName) - .addAllVector(ImmutableList.of(10.4f, 11.4f)) - .setGroupBy("foo") - .setGroupSize(2) - .setLimit(10) - .build()) - .get(); - - assertEquals(2, groups.size()); - assertEquals(1, groups.stream().filter(g -> g.getHitsCount() == 2).count()); - assertEquals(1, groups.stream().filter(g -> g.getHitsCount() == 1).count()); - } - - @Test - public void scroll() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - ScrollResponse scrollResponse = - client - .scrollAsync(ScrollPoints.newBuilder().setCollectionName(testName).setLimit(1).build()) - .get(); - - assertEquals(1, scrollResponse.getResultCount()); - assertTrue(scrollResponse.hasNextPageOffset()); - - scrollResponse = - client - .scrollAsync( - ScrollPoints.newBuilder() - .setCollectionName(testName) - .setLimit(1) - .setOffset(scrollResponse.getNextPageOffset()) - .build()) - .get(); - - assertEquals(1, scrollResponse.getResultCount()); - assertFalse(scrollResponse.hasNextPageOffset()); - } - - @Test - public void scrollWithOrdering() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - Collections.PayloadIndexParams params = - Collections.PayloadIndexParams.newBuilder() - .setIntegerIndexParams( - Collections.IntegerIndexParams.newBuilder().setLookup(false).setRange(true).build()) - .build(); - - UpdateResult resultIndex = - client - .createPayloadIndexAsync( - testName, "bar", PayloadSchemaType.Integer, params, true, null, null) - .get(); - - assertEquals(UpdateStatus.Completed, resultIndex.getStatus()); - - CollectionInfo collectionInfo = client.getCollectionInfoAsync(testName).get(); - assertEquals(ImmutableSet.of("bar"), collectionInfo.getPayloadSchemaMap().keySet()); - - ScrollResponse scrollResponse = - client - .scrollAsync( - ScrollPoints.newBuilder() - .setCollectionName(testName) - .setLimit(1) - .setOrderBy( - Points.OrderBy.newBuilder() - .setDirection(Points.Direction.Desc) - .setKey("bar") - .build()) - .build()) - .get(); - - assertEquals(1, scrollResponse.getResultCount()); - assertFalse(scrollResponse.hasNextPageOffset()); - assertEquals(scrollResponse.getResult(0).getId(), id(9)); - } - - @Test - public void recommend() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List points = - client - .recommendAsync( - RecommendPoints.newBuilder() - .setCollectionName(testName) - .addPositive(id(8)) - .setLimit(1) - .build()) - .get(); - - assertEquals(1, points.size()); - assertEquals(id(9), points.get(0).getId()); - } - - @Test - public void recommendBatch() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List batchResults = - client - .recommendBatchAsync( - testName, - ImmutableList.of( - RecommendPoints.newBuilder() - .setCollectionName(testName) - .addPositive(id(8)) - .setLimit(1) - .build(), - RecommendPoints.newBuilder() - .setCollectionName(testName) - .addPositive(id(9)) - .setLimit(1) - .build()), - null) - .get(); - - assertEquals(2, batchResults.size()); - BatchResult result = batchResults.get(0); - assertEquals(1, result.getResultCount()); - assertEquals(id(9), result.getResult(0).getId()); - result = batchResults.get(1); - assertEquals(1, result.getResultCount()); - assertEquals(id(8), result.getResult(0).getId()); - } - - @Test - public void recommendGroups() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - client - .upsertAsync( - testName, - ImmutableList.of( - PointStruct.newBuilder() - .setId(id(10)) - .setVectors(VectorsFactory.vectors(30f, 31f)) - .putAllPayload(ImmutableMap.of("foo", value("hello"))) - .build())) - .get(); - - List groups = - client - .recommendGroupsAsync( - RecommendPointGroups.newBuilder() - .setCollectionName(testName) - .setGroupBy("foo") - .addPositive(id(9)) - .setGroupSize(2) - .setLimit(10) - .build()) - .get(); - - assertEquals(1, groups.size()); - assertEquals(2, groups.get(0).getHitsCount()); - } - - @Test - public void discover() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List points = - client - .discoverAsync( - DiscoverPoints.newBuilder() - .setCollectionName(testName) - .setTarget(targetVector(vector(ImmutableList.of(10.4f, 11.4f)))) - .setLimit(1) - .build()) - .get(); - - assertEquals(1, points.size()); - assertEquals(id(9), points.get(0).getId()); - } - - @Test - public void discoverBatch() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List batchResults = - client - .discoverBatchAsync( - testName, - ImmutableList.of( - DiscoverPoints.newBuilder() - .setCollectionName(testName) - .setTarget(targetVector(vector(ImmutableList.of(10.4f, 11.4f)))) - .setLimit(1) - .build(), - DiscoverPoints.newBuilder() - .setCollectionName(testName) - .setTarget(targetVector(vector(ImmutableList.of(3.5f, 4.5f)))) - .setLimit(1) - .build()), - null) - .get(); - - assertEquals(2, batchResults.size()); - BatchResult result = batchResults.get(0); - assertEquals(1, result.getResultCount()); - assertEquals(id(9), result.getResult(0).getId()); - result = batchResults.get(1); - assertEquals(1, result.getResultCount()); - assertEquals(id(8), result.getResult(0).getId()); - } - - @Test - public void count() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - Long count = client.countAsync(testName).get(); - assertEquals(2, count); - } - - @Test - public void count_with_filter() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - Long count = - client - .countAsync( - testName, - Filter.newBuilder() - .addMust(hasId(id(9))) - .addMust(matchKeyword("foo", "goodbye")) - .build(), - null) - .get(); - assertEquals(1, count); - } - - @Test - public void delete_by_id() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List points = client.retrieveAsync(testName, id(8), false, false, null).get(); - - assertEquals(1, points.size()); - - client.deleteAsync(testName, ImmutableList.of(id(8))).get(); - - points = client.retrieveAsync(testName, id(8), false, false, null).get(); - - assertEquals(0, points.size()); - } - - @Test - public void delete_by_filter() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List points = client.retrieveAsync(testName, id(8), false, false, null).get(); - - assertEquals(1, points.size()); - - client - .deleteAsync(testName, Filter.newBuilder().addMust(matchKeyword("foo", "hello")).build()) - .get(); - - points = client.retrieveAsync(testName, id(8), false, false, null).get(); - - assertEquals(0, points.size()); - } - - @Test - public void batchPointUpdate() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List operations = - Arrays.asList( - PointsUpdateOperation.newBuilder() - .setClearPayload( - ClearPayload.newBuilder() - .setPoints( - PointsSelector.newBuilder() - .setPoints(PointsIdsList.newBuilder().addIds(id(9)))) - .build()) - .build(), - PointsUpdateOperation.newBuilder() - .setUpdateVectors( - UpdateVectors.newBuilder() - .addPoints( - PointVectors.newBuilder().setId(id(9)).setVectors(vectors(0.6f, 0.7f)))) - .build()); - - List response = client.batchUpdateAsync(testName, operations).get(); - - response.forEach(result -> assertEquals(UpdateStatus.Completed, result.getStatus())); - } - - @Test - public void query() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List points = - client.queryAsync(QueryPoints.newBuilder().setCollectionName(testName).build()).get(); - - assertEquals(2, points.size()); - assertEquals(points.get(0).getId(), id(8)); - assertEquals(points.get(1).getId(), id(9)); - - points = - client - .queryAsync(QueryPoints.newBuilder().setCollectionName(testName).setLimit(1).build()) - .get(); - - assertEquals(1, points.size()); - assertEquals(id(8), points.get(0).getId()); - } - - @Test - public void queryWithFilter() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List points = - client - .queryAsync( - QueryPoints.newBuilder() - .setCollectionName(testName) - .setFilter(Filter.newBuilder().addMust(matchKeyword("foo", "hello")).build()) - .build()) - .get(); - - assertEquals(1, points.size()); - assertEquals(id(8), points.get(0).getId()); - } - - @Test - public void queryNearestWithID() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List points = - client - .queryAsync( - QueryPoints.newBuilder().setCollectionName(testName).setQuery(nearest(8)).build()) - .get(); - - assertEquals(1, points.size()); - assertEquals(id(9), points.get(0).getId()); - } - - @Test - public void queryNearestWithVector() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List points = - client - .queryAsync( - QueryPoints.newBuilder() - .setCollectionName(testName) - .setQuery(nearest(10.5f, 11.5f)) - .build()) - .get(); - - assertEquals(2, points.size()); - assertEquals(id(9), points.get(0).getId()); - } - - @Test - public void queryOrderBy() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - Collections.PayloadIndexParams params = - Collections.PayloadIndexParams.newBuilder() - .setIntegerIndexParams( - Collections.IntegerIndexParams.newBuilder().setLookup(false).setRange(true).build()) - .build(); - - UpdateResult resultIndex = - client - .createPayloadIndexAsync( - testName, "bar", PayloadSchemaType.Integer, params, true, null, null) - .get(); - - assertEquals(UpdateStatus.Completed, resultIndex.getStatus()); - - CollectionInfo collectionInfo = client.getCollectionInfoAsync(testName).get(); - assertEquals(ImmutableSet.of("bar"), collectionInfo.getPayloadSchemaMap().keySet()); - assertEquals( - PayloadSchemaType.Integer, collectionInfo.getPayloadSchemaMap().get("bar").getDataType()); - - List points = - client - .queryAsync( - QueryPoints.newBuilder() - .setCollectionName(testName) - .setLimit(1) - .setQuery(orderBy("bar")) - .build()) - .get(); - - assertEquals(1, points.size()); - assertEquals(id(8), points.get(0).getId()); - } - - @Test - public void queryWithPrefetchLimit() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List points = - client - .queryAsync( - QueryPoints.newBuilder() - .addPrefetch(PrefetchQuery.newBuilder().setLimit(1).build()) - .setCollectionName(testName) - .setQuery(nearest(10.5f, 11.5f)) - .build()) - .get(); - - assertEquals(1, points.size()); - } - - @Test - public void queryWithPrefetchAndFusion() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List points = - client - .queryAsync( - QueryPoints.newBuilder() - .addPrefetch(PrefetchQuery.newBuilder().setQuery(nearest(10.5f, 11.5f)).build()) - .addPrefetch(PrefetchQuery.newBuilder().setQuery(nearest(3.5f, 4.5f)).build()) - .setCollectionName(testName) - .setQuery(fusion(Fusion.RRF)) - .build()) - .get(); - - assertEquals(2, points.size()); - } - - @Test - public void queryWithSampling() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - List points = - client - .queryAsync( - QueryPoints.newBuilder() - .setCollectionName(testName) - .setQuery(sample(Sample.Random)) - .setLimit(1) - .build()) - .get(); - - assertEquals(1, points.size()); - } - - @Test - public void queryGroups() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - client - .upsertAsync( - testName, - ImmutableList.of( - PointStruct.newBuilder() - .setId(id(10)) - .setVectors(VectorsFactory.vectors(30f, 31f)) - .putAllPayload(ImmutableMap.of("foo", value("hello"))) - .build())) - .get(); - // 3 points in total, 2 with "foo" = "hello" and 1 with "foo" = "goodbye" - - List groups = - client - .queryGroupsAsync( - QueryPointGroups.newBuilder() - .setCollectionName(testName) - .setQuery(nearest(ImmutableList.of(10.4f, 11.4f))) - .setGroupBy("foo") - .setGroupSize(2) - .setLimit(10) - .build()) - .get(); - - assertEquals(2, groups.size()); - // A group with 2 hits because of 2 points with "foo" = "hello" - assertEquals(1, groups.stream().filter(g -> g.getHitsCount() == 2).count()); - // A group with 1 hit because of 1 point with "foo" = "goodbye" - assertEquals(1, groups.stream().filter(g -> g.getHitsCount() == 1).count()); - } - - @Test - public void searchMatrixOffsets() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - Points.SearchMatrixOffsets offsets = - client - .searchMatrixOffsetsAsync( - Points.SearchMatrixPoints.newBuilder() - .setCollectionName(testName) - .setSample(3) - .setLimit(2) - .build()) - .get(); - - // Number of ids matches the limit - assertEquals(2, offsets.getIdsCount()); - } - - @Test - public void searchMatrixPairs() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - Points.SearchMatrixPairs pairs = - client - .searchMatrixPairsAsync( - Points.SearchMatrixPoints.newBuilder() - .setCollectionName(testName) - .setSample(3) - .setLimit(2) - .build()) - .get(); - - // Number of ids matches the limit - assertEquals(2, pairs.getPairsCount()); - } - - @Test - public void facets() throws ExecutionException, InterruptedException { - createAndSeedCollection(testName); - - // create payload index for "foo" field - UpdateResult result = - client - .createPayloadIndexAsync( - testName, "foo", PayloadSchemaType.Keyword, null, null, null, null) - .get(); - - assertEquals(UpdateStatus.Completed, result.getStatus()); - - List facets = - client - .facetAsync( - Points.FacetCounts.newBuilder() - .setCollectionName(testName) - .setKey("foo") - .setLimit(2) - .build()) - .get(); - - // Number of facets matches the limit - assertEquals(2, facets.size()); - // validate hits - assertEquals( - 1, - facets.stream() - .filter(f -> f.getValue().getStringValue().equals("hello") && f.getCount() == 1) - .count()); - assertEquals( - 1, - facets.stream() - .filter(f -> f.getValue().getStringValue().equals("goodbye") && f.getCount() == 1) - .count()); - } - - private void createAndSeedCollection(String collectionName) - throws ExecutionException, InterruptedException { - CreateCollection request = - CreateCollection.newBuilder() - .setCollectionName(collectionName) - .setVectorsConfig( - VectorsConfig.newBuilder() - .setParams( - VectorParams.newBuilder().setDistance(Distance.Cosine).setSize(2).build()) - .build()) - .build(); - - client.createCollectionAsync(request).get(); - - UpdateResult result = - client - .upsertAsync( - collectionName, - ImmutableList.of( - PointStruct.newBuilder() - .setId(id(8)) - .setVectors(VectorsFactory.vectors(ImmutableList.of(3.5f, 4.5f))) - .putAllPayload( - ImmutableMap.of( - "foo", value("hello"), - "bar", value(1), - "date", value("2021-01-01T00:00:00Z"))) - .build(), - PointStruct.newBuilder() - .setId(id(9)) - .setVectors(VectorsFactory.vectors(ImmutableList.of(10.5f, 11.5f))) - .putAllPayload( - ImmutableMap.of( - "foo", value("goodbye"), - "bar", value(2), - "date", value("2024-01-02T00:00:00Z"))) - .build())) - .get(); - assertEquals(UpdateStatus.Completed, result.getStatus()); - } -} diff --git a/src/test/java/io/qdrant/client/QdrantClientTest.java b/src/test/java/io/qdrant/client/QdrantClientTest.java deleted file mode 100644 index 624768f8..00000000 --- a/src/test/java/io/qdrant/client/QdrantClientTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.qdrant.client; - -import io.grpc.Grpc; -import io.grpc.InsecureChannelCredentials; -import io.grpc.ManagedChannel; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.qdrant.QdrantContainer; - -@Testcontainers -class QdrantClientTest { - - @Container - private static final QdrantContainer QDRANT_CONTAINER = - new QdrantContainer(DockerImage.QDRANT_IMAGE); - - private QdrantClient client; - - @BeforeEach - public void setup() { - ManagedChannel channel = - Grpc.newChannelBuilder( - QDRANT_CONTAINER.getGrpcHostAddress(), InsecureChannelCredentials.create()) - .build(); - QdrantGrpcClient grpcClient = QdrantGrpcClient.newBuilder(channel, true).build(); - client = new QdrantClient(grpcClient); - } - - @AfterEach - public void teardown() { - client.close(); - } - - @Test - void canAccessChannelOnGrpcClient() { - Assertions.assertTrue(client.grpcClient().channel().authority().startsWith("localhost")); - } -} diff --git a/src/test/java/io/qdrant/client/QdrantGrpcClientTest.java b/src/test/java/io/qdrant/client/QdrantGrpcClientTest.java deleted file mode 100644 index e2e910fb..00000000 --- a/src/test/java/io/qdrant/client/QdrantGrpcClientTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package io.qdrant.client; - -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import io.grpc.Grpc; -import io.grpc.InsecureChannelCredentials; -import io.qdrant.client.grpc.QdrantOuterClass; -import java.util.concurrent.ExecutionException; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.qdrant.QdrantContainer; - -@Testcontainers -class QdrantGrpcClientTest { - - @Container - private static final QdrantContainer QDRANT_CONTAINER = - new QdrantContainer(DockerImage.QDRANT_IMAGE); - - private QdrantGrpcClient client; - - @BeforeEach - public void setup() { - client = - QdrantGrpcClient.newBuilder( - Grpc.newChannelBuilder( - QDRANT_CONTAINER.getGrpcHostAddress(), InsecureChannelCredentials.create()) - .build()) - .build(); - } - - @AfterEach - public void teardown() { - client.close(); - } - - @Test - void healthCheck() throws ExecutionException, InterruptedException { - QdrantOuterClass.HealthCheckReply healthCheckReply = - client.qdrant().healthCheck(QdrantOuterClass.HealthCheckRequest.getDefaultInstance()).get(); - - assertNotNull(healthCheckReply.getTitle()); - assertNotNull(healthCheckReply.getVersion()); - } -} diff --git a/src/test/java/io/qdrant/client/SnapshotsTest.java b/src/test/java/io/qdrant/client/SnapshotsTest.java deleted file mode 100644 index be955b94..00000000 --- a/src/test/java/io/qdrant/client/SnapshotsTest.java +++ /dev/null @@ -1,160 +0,0 @@ -package io.qdrant.client; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import io.grpc.Grpc; -import io.grpc.InsecureChannelCredentials; -import io.grpc.ManagedChannel; -import io.grpc.Status; -import io.grpc.StatusRuntimeException; -import io.qdrant.client.grpc.Collections; -import io.qdrant.client.grpc.SnapshotsService.SnapshotDescription; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInfo; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.qdrant.QdrantContainer; - -@Testcontainers -class SnapshotsTest { - @Container - private static final QdrantContainer QDRANT_CONTAINER = - new QdrantContainer(DockerImage.QDRANT_IMAGE); - - private QdrantClient client; - private ManagedChannel channel; - private String testName; - - @BeforeEach - public void setup(TestInfo testInfo) { - testName = testInfo.getDisplayName().replace("()", ""); - channel = - Grpc.newChannelBuilder( - QDRANT_CONTAINER.getGrpcHostAddress(), InsecureChannelCredentials.create()) - .build(); - QdrantGrpcClient grpcClient = QdrantGrpcClient.newBuilder(channel).build(); - client = new QdrantClient(grpcClient); - } - - @AfterEach - public void teardown() throws Exception { - List collectionNames = client.listCollectionsAsync().get(); - for (String collectionName : collectionNames) { - List snapshots = client.listSnapshotAsync(collectionName).get(); - for (SnapshotDescription snapshot : snapshots) { - client.deleteSnapshotAsync(collectionName, snapshot.getName()).get(); - } - client.deleteCollectionAsync(collectionName).get(); - } - - List snapshots = client.listFullSnapshotAsync().get(); - for (SnapshotDescription snapshot : snapshots) { - client.deleteFullSnapshotAsync(snapshot.getName()).get(); - } - - client.close(); - channel.shutdownNow().awaitTermination(5, TimeUnit.SECONDS); - } - - @Test - public void createSnapshot() throws ExecutionException, InterruptedException { - createCollection(testName); - client.createSnapshotAsync(testName).get(); - } - - @Test - public void deleteSnapshot() throws ExecutionException, InterruptedException { - createCollection(testName); - SnapshotDescription snapshotDescription = client.createSnapshotAsync(testName).get(); - client.deleteSnapshotAsync(testName, snapshotDescription.getName()).get(); - } - - @Test - public void deleteSnapshot_with_missing_snapshot() { - ExecutionException exception = - assertThrows( - ExecutionException.class, - () -> client.deleteSnapshotAsync(testName, "snapshot_1").get()); - Throwable cause = exception.getCause(); - assertEquals(StatusRuntimeException.class, cause.getClass()); - StatusRuntimeException underlyingException = (StatusRuntimeException) cause; - assertEquals(Status.Code.NOT_FOUND, underlyingException.getStatus().getCode()); - } - - @Test - public void listSnapshots() throws ExecutionException, InterruptedException { - createCollection(testName); - client.createSnapshotAsync(testName).get(); - // snapshots are timestamped named to second precision. Wait more than 1 second to ensure we get - // 2 snapshots - Thread.sleep(2000); - client.createSnapshotAsync(testName).get(); - - List snapshotDescriptions = client.listSnapshotAsync(testName).get(); - assertEquals(2, snapshotDescriptions.size()); - } - - @Test - public void createFullSnapshot() throws ExecutionException, InterruptedException { - createCollection(testName); - createCollection(testName + "2"); - client.createFullSnapshotAsync().get(); - } - - @Test - public void deleteFullSnapshot() throws ExecutionException, InterruptedException { - createCollection(testName); - createCollection(testName + "2"); - SnapshotDescription snapshotDescription = client.createFullSnapshotAsync().get(); - client.deleteFullSnapshotAsync(snapshotDescription.getName()).get(); - } - - @Test - public void deleteFullSnapshot_with_missing_snapshot() { - ExecutionException exception = - assertThrows( - ExecutionException.class, () -> client.deleteFullSnapshotAsync("snapshot_1").get()); - Throwable cause = exception.getCause(); - assertEquals(StatusRuntimeException.class, cause.getClass()); - StatusRuntimeException underlyingException = (StatusRuntimeException) cause; - assertEquals(Status.Code.NOT_FOUND, underlyingException.getStatus().getCode()); - } - - @Test - public void listFullSnapshots() throws ExecutionException, InterruptedException { - createCollection(testName); - createCollection(testName + 2); - client.createFullSnapshotAsync().get(); - // snapshots are timestamped named to second precision. Wait more than 1 second to ensure we get - // 2 snapshots - Thread.sleep(2000); - client.createFullSnapshotAsync().get(); - - List snapshotDescriptions = client.listFullSnapshotAsync().get(); - assertEquals(2, snapshotDescriptions.size()); - } - - private void createCollection(String collectionName) - throws ExecutionException, InterruptedException { - Collections.CreateCollection request = - Collections.CreateCollection.newBuilder() - .setCollectionName(collectionName) - .setVectorsConfig( - Collections.VectorsConfig.newBuilder() - .setParams( - Collections.VectorParams.newBuilder() - .setDistance(Collections.Distance.Cosine) - .setSize(4) - .build()) - .build()) - .build(); - - client.createCollectionAsync(request).get(); - } -} diff --git a/src/test/java/io/qdrant/client/VersionsCompatibilityCheckerTest.java b/src/test/java/io/qdrant/client/VersionsCompatibilityCheckerTest.java deleted file mode 100644 index 46cc4a51..00000000 --- a/src/test/java/io/qdrant/client/VersionsCompatibilityCheckerTest.java +++ /dev/null @@ -1,71 +0,0 @@ -package io.qdrant.client; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.stream.Stream; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.MethodSource; - -public class VersionsCompatibilityCheckerTest { - private static Stream validVersionProvider() { - return Stream.of( - new Object[] {"1.2.3", 1, 2}, - new Object[] {"1.2.3-alpha", 1, 2}, - new Object[] {"1.2", 1, 2}, - new Object[] {"1", 1, 0}, - new Object[] {"1.", 1, 0}); - } - - @ParameterizedTest - @MethodSource("validVersionProvider") - public void testParseVersion_validVersion(String versionStr, int expectedMajor, int expectedMinor) - throws Exception { - Method method = - VersionsCompatibilityChecker.class.getDeclaredMethod("parseVersion", String.class); - method.setAccessible(true); - Version version = (Version) method.invoke(null, versionStr); - assertEquals(expectedMajor, version.getMajor()); - assertEquals(expectedMinor, version.getMinor()); - } - - private static Stream invalidVersionProvider() { - return Stream.of("v1.12.0", "", ".1", ".1.", "1.null.1", "null.0.1", null); - } - - @ParameterizedTest - @MethodSource("invalidVersionProvider") - public void testParseVersion_invalidVersion(String versionStr) throws Exception { - Method method = - VersionsCompatibilityChecker.class.getDeclaredMethod("parseVersion", String.class); - method.setAccessible(true); - assertThrows(InvocationTargetException.class, () -> method.invoke(null, versionStr)); - } - - private static Stream versionCompatibilityProvider() { - return Stream.of( - new Object[] {"1.9.3.dev0", "2.8.1.dev12-something", false}, - new Object[] {"1.9", "2.8", false}, - new Object[] {"1", "2", false}, - new Object[] {"1.9.0", "2.9.0", false}, - new Object[] {"1.1.0", "1.2.9", true}, - new Object[] {"1.2.7", "1.1.8.dev0", true}, - new Object[] {"1.2.1", "1.2.29", true}, - new Object[] {"1.2.0", "1.2.0", true}, - new Object[] {"1.2.0", "1.4.0", false}, - new Object[] {"1.4.0", "1.2.0", false}, - new Object[] {"1.9.0", "3.7.0", false}, - new Object[] {"3.0.0", "1.0.0", false}, - new Object[] {"", "1.0.0", false}, - new Object[] {"1.0.0", "", false}, - new Object[] {"", "", false}); - } - - @ParameterizedTest - @MethodSource("versionCompatibilityProvider") - public void testIsCompatible(String clientVersion, String serverVersion, boolean expected) { - assertEquals(expected, VersionsCompatibilityChecker.isCompatible(clientVersion, serverVersion)); - } -} diff --git a/src/test/java/io/qdrant/client/package-info.java b/src/test/java/io/qdrant/client/package-info.java deleted file mode 100644 index 7d0ca726..00000000 --- a/src/test/java/io/qdrant/client/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@ParametersAreNonnullByDefault -package io.qdrant.client; - -import javax.annotation.ParametersAreNonnullByDefault; diff --git a/stylesheet.css b/stylesheet.css new file mode 100644 index 00000000..4a576bd2 --- /dev/null +++ b/stylesheet.css @@ -0,0 +1,869 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:#bb7a2a; +} +a[name] { + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; +} +h4 { + font-size:15px; +} +h5 { + font-size:14px; +} +h6 { + font-size:13px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +.summary-table dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size: 14px; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.clear { + clear:both; + height:0; + overflow:hidden; +} +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:11px; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* + * Styles for navigation bar. + */ +@media screen { + .flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + .flex-header { + flex: 0 0 auto; + } + .flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + min-height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.sub-nav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.sub-nav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list { + padding-top:5px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0 0 0 0; + padding:5px 6px; + clear:none; +} +.nav-list-search label { + position:relative; + right:-16px; +} +ul.sub-nav-list li { + list-style:none; + float:left; + padding-top:10px; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.nav-bar-cell1-rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header and footer. + */ +.title { + color:#2c4557; + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.see-list, ul.see-list-long { + padding-left: 0; + list-style: none; +} +ul.see-list li { + display: inline; +} +ul.see-list li:not(:last-child):after, +ul.see-list-long li:not(:last-child):after { + content: ", "; + white-space: pre-wrap; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0; + padding-top:10px; + padding-left:1px; + margin:0; + white-space:pre; +} +.caption a:link, .caption a:visited { + color:#1f389c; +} +.caption a:hover, +.caption a:active { + color:#FFFFFF; +} +.caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; +} +div.table-tabs > button.active-table-tab { + background: #F8981D; + color: #253441; +} +div.table-tabs > button.table-tab { + background: #4D7A97; + color: #FFFFFF; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto); +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +@media screen and (max-width: 800px) { + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-summary .col-last { + grid-column-end: span 2; + } +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:#dee3e9; + font-weight: bold; +} +.col-first, .col-first { + font-size:13px; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:13px; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited, +.constant-values-container a:link, .constant-values-container a:visited, +.all-classes-container a:link, .all-classes-container a:visited, +.all-packages-container a:link, .all-packages-container a:visited { + font-weight:bold; +} +.table-sub-heading-color { + background-color:#EEEEFF; +} +.even-row-color, .even-row-color .table-header { + background-color:#FFFFFF; +} +.odd-row-color, .odd-row-color .table-header { + background-color:#EEEEEF; +} +/* + * Styles for contents. + */ +.deprecated-content { + margin:0; + padding:10px 0; +} +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:0 10px 5px 0; + color:#474747; +} +.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:#4D7A97; + color:#FFFFFF; +} +.result-item { + font-size:13px; +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:scroll; + overflow-x:scroll; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:999999; + background-color: #FFFFFF; +} +ul.ui-autocomplete li { + float:left; + clear:both; + width:100%; +} +.result-highlight { + font-weight:bold; +} +.ui-autocomplete .result-item { + font-size: inherit; +} +#search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + padding-left:20px; + position:relative; + right:-18px; + width:400px; +} +#reset-button { + background-color: rgb(255,255,255); + background-image:url('resources/x.png'); + background-position:center; + background-repeat:no-repeat; + background-size:12px; + border:0 none; + width:16px; + height:16px; + position:relative; + left:-4px; + top:-4px; + font-size:0px; +} +.watermark { + color:#545454; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:yellow; +} +.module-graph span { + display:none; + position:absolute; +} +.module-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0px 20px 5px 10px; + border: 1px solid #ededed; + background-color: #f8f8f8; +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +span.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} + +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid black; +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid black; +} +table.striped { + border-collapse: collapse; + border: 1px solid black; +} +table.striped > thead { + background-color: #E3E3E3; +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid black; +} +table.striped > tbody > tr:nth-child(even) { + background-color: #EEE +} +table.striped > tbody > tr:nth-child(odd) { + background-color: #FFF +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid black; + border-right: 1px solid black; +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak font sizes and paddings for small screens. + */ +@media screen and (max-width: 1050px) { + #search-input { + width: 300px; + } +} +@media screen and (max-width: 800px) { + #search-input { + width: 200px; + } + .top-nav, + .bottom-nav { + font-size: 11px; + padding-top: 6px; + } + .sub-nav { + font-size: 11px; + } + .about-language { + padding-right: 16px; + } + ul.nav-list li, + .sub-nav .nav-list-search { + padding: 6px; + } + ul.sub-nav-list li { + padding-top: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 500px) { + #search-input { + width: 150px; + } + .top-nav, + .bottom-nav { + font-size: 10px; + } + .sub-nav { + font-size: 10px; + } + .about-language { + font-size: 10px; + padding-right: 12px; + } +} diff --git a/tag-search-index.js b/tag-search-index.js new file mode 100644 index 00000000..f38b3cb3 --- /dev/null +++ b/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [{"l":"Serialized Form","h":"","u":"serialized-form.html"}];updateSearchResults(); \ No newline at end of file diff --git a/type-search-index.js b/type-search-index.js new file mode 100644 index 00000000..599a9c6e --- /dev/null +++ b/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"io.qdrant.client","l":"QdrantGrpcClient.Builder"},{"p":"io.qdrant.client","l":"ConditionFactory"},{"p":"io.qdrant.client","l":"ExpressionFactory"},{"p":"io.qdrant.client","l":"MetadataCredentials"},{"p":"io.qdrant.client","l":"PointIdFactory"},{"p":"io.qdrant.client","l":"QdrantClient"},{"p":"io.qdrant.client","l":"QdrantException"},{"p":"io.qdrant.client","l":"QdrantGrpcClient"},{"p":"io.qdrant.client","l":"QueryFactory"},{"p":"io.qdrant.client","l":"RequestHeaders"},{"p":"io.qdrant.client","l":"ShardKeyFactory"},{"p":"io.qdrant.client","l":"ShardKeySelectorFactory"},{"p":"io.qdrant.client","l":"StartFromFactory"},{"p":"io.qdrant.client","l":"TargetVectorFactory"},{"p":"io.qdrant.client","l":"ValueFactory"},{"p":"io.qdrant.client","l":"VectorFactory"},{"p":"io.qdrant.client","l":"VectorInputFactory"},{"p":"io.qdrant.client","l":"VectorOutputHelper"},{"p":"io.qdrant.client","l":"VectorsFactory"},{"p":"io.qdrant.client","l":"VersionsCompatibilityChecker"},{"p":"io.qdrant.client","l":"WithPayloadSelectorFactory"},{"p":"io.qdrant.client","l":"WithVectorsSelectorFactory"}];updateSearchResults(); \ No newline at end of file