Java client library for accessing the HTTP API of Typesense search engine.
The client is available on Maven central:
dependencies{implementation 'org.typesense:typesense-java:1.3.0' }<dependency> <groupId>org.typesense</groupId> <artifactId>typesense-java</artifactId> <version>1.3.0</version> </dependency>importorg.typesense.api.*; importorg.typesense.model.*; importorg.typesense.resources.*;typesense-java is compatible with Java versions 8+ and Android SDK versions 26+
List<Node> nodes = newArrayList<>(); nodes.add( newNode( "http", // For Typesense Cloud use https"localhost", // For Typesense Cloud use xxx.a1.typesense.net"8108"// For Typesense Cloud use 443 ) ); Configurationconfiguration = newConfiguration(nodes, Duration.ofSeconds(2),"<API_KEY>"); Clientclient = newClient(configuration);List<Field> fields = newArrayList<>(); fields.add(newField().name("countryName").type(FieldTypes.STRING)); fields.add(newField().name("capital").type(FieldTypes.STRING)); fields.add(newField().name("gdp").type(FieldTypes.INT32).facet(true).sort(true)); CollectionSchemacollectionSchema = newCollectionSchema(); collectionSchema.name("Countries").fields(fields).defaultSortingField("gdp"); client.collections().create(collectionSchema);StringschemaJson = newString( Files.readAllBytes(Paths.get("schema.json")), StandardCharsets.UTF_8 ); client.collections().create(schemaJson);Map<String, Object> hmap = newHashMap<>(); hmap.put("countryName","India"); hmap.put("capital","Delhi"); hmap.put("gdp", 10); client.collections("Countries").documents().create(hmap);Map<String, Object> hmap = newHashMap<>(); hmap.put("countryName","India"); hmap.put("capital","Delhi"); hmap.put("gdp", 5); client.collections("Countries").documents().upsert(hmap);ImportDocumentsParametersqueryParameters = newImportDocumentsParameters(); queryParameters.action("create"); StringdocumentList = "{\"countryName\": \"India\", \"capital\": \"Washington\", \"gdp\": 5215}\n" + "{\"countryName\": \"Iran\", \"capital\": \"London\", \"gdp\": 5215}"; // Import your document as JSONL string from a file.client.collections("Countries").documents().import_(documentList, queryParameters)SearchParameterssearchParameters = newSearchParameters() .q("tokoyo") .queryBy("countryName,capital") .prefix("true,false"); SearchResultsearchResult = client.collections("Countries").documents().search(searchParameters);Map<String, Object> hmap = newHashMap<>(); hmap.put("gdp", 8); client.collections("Countries").documents("28").update(hmap);client.collections("Countries").documents("28").retrieve();client.collections("Countries").documents("28").delete();DeleteDocumentsParametersdeleteDocumentsParameters = newDeleteDocumentsParameters(); deleteDocumentsParameters.filterBy("gdp:=[2,8]"); deleteDocumentsParameters.batchSize(10);client.collections("Countries").retrieve();client.collections().retrieve();client.collections("Countries").delete(); client.collections("Countries").documents().export();AnalyticsRuleSchemaanalyticsRule = newAnalyticsRuleSchema(); analyticsRule.setName("popular-queries"); analyticsRule.setType(AnalyticsRuleSchema.TypeEnum.POPULAR_QUERIES); analyticsRule.setParams(newAnalyticsRuleParameters() .source(newAnalyticsRuleParametersSource() .collections(Arrays.asList("Countries"))) .destination(newAnalyticsRuleParametersDestination() .collection("top_searches"))); client.analytics().rules().create(analyticsRule);AnalyticsRuleUpsertSchemaanalyticsRule = newAnalyticsRuleUpsertSchema() .type(AnalyticsRuleUpsertSchema.TypeEnum.NOHITS_QUERIES) .params(newAnalyticsRuleParameters() .source(newAnalyticsRuleParametersSource() .collections(Arrays.asList("Countries"))) .destination(newAnalyticsRuleParametersDestination() .collection("failed_searches"))); client.analytics().rules().upsert("failed-searches", analyticsRule);AnalyticsRulesRetrieveSchemarules = client.analytics().rules().retrieve();AnalyticsRuleSchemarule = client.analytics().rules("failed-searches").retrieve();client.analytics().rules("failed-searches").delete();AnalyticsEventCreateSchemaanalyticsEvent = newAnalyticsEventCreateSchema() .type("conversion") .name("purchase_made") .data(Map.of( "product_id", "123", "user_id", "user_456", "amount", "99.99" )); client.analytics().events().create(analyticsEvent);List<String> stopwords = newArrayList<>(); stopwords.add("the"); stopwords.add("of"); stopwords.add("and"); StopwordsSetUpsertSchemastopwordsSet = newStopwordsSetUpsertSchema(); stopwordsSet.stopwords(stopwords); client.stopwords().upsert("common-words", stopwordsSet);StopwordsSetRetrieveSchemaset = client.stopwords("common-words").retrieve();StopwordsSetsRetrieveAllSchemasets = client.stopwords().retrieve();client.stopwords("common-words").delete();ApiKeySchemaapiKeySchema = newApiKeySchema(); List<String> actionValues = newArrayList<>(); List<String> collectionValues = newArrayList<>(); actionValues.add("*"); collectionValues.add("*"); apiKeySchema.description("Admin Key").actions(actionValues).collections(collectionValues); client.keys().create(apiKeySchema);ApiKeySchemaapiKeySchema = newApiKeySchema(); List<String> actionValues = newArrayList<>(); List<String> collectionValues = newArrayList<>(); actionValues.add("documents:search"); collectionValues.add("Countries"); apiKeySchema.description("Search only Key").actions(actionValues).collections(collectionValues); client.keys().create(apiKeySchema);client.keys("6").retrieve();client.keys().retrieve();client.keys("6").delete();SearchOverrideSchemasearchOverrideSchema = newSearchOverrideSchema(); List<SearchOverrideInclude> searchOverrideIncludes = newArrayList<>(); searchOverrideIncludes.add(newSearchOverrideInclude().id("422").position(1)); searchOverrideIncludes.add(newSearchOverrideInclude().id("54").position(2)); List<SearchOverrideExclude> searchOverrideExcludes = newArrayList<>(); searchOverrideExcludes.add(newSearchOverrideExclude().id("287")); searchOverrideSchema.rule(newSearchOverrideRule().query("new york").match("exact")) .includes(searchOverrideIncludes) .excludes(searchOverrideExcludes); client.collections("Countries").overrides().upsert("new-york", searchOverrideSchema)client.collections("Countries").overrides("new-york").retrieve();client.collections("Countries").overrides().retrieve();client.collections("Countries").overrides("new-york").delete();CollectionAliasSchemacollectionAliasSchema = newCollectionAliasSchema(); collectionAliasSchema.collectionName("Countries"); client.aliases().upsert("countries2", collectionAliasSchema)client.aliases("countries2").retrieve();client.aliases().retrieve();client.aliases("countries2").delete();SearchSynonymSchemasynonym = newSearchSynonymSchema(); synonym.addSynonymsItem("France").addSynonymsItem("Germany").addSynonymsItem("Sweden"); client.collections("Countries").synonyms().upsert("country-synonyms",synonym)SearchSynonymSchemasynonym = newSearchSynonymSchema(); synonym.root("europe"); synonym.addSynonymsItem("France").addSynonymsItem("Germany").addSynonymsItem("Sweden"); client.collections("Countries").synonyms().upsert("continent-synonyms",synonym)client.collections("Countries").synonyms("continent-synonyms").retrieve();client.collections("Countries").synonyms().retrieve();client.collections("Countries").synonyms("continent-synonyms").delete();Map<String, String> query = newHashMap<>(); query.put("snapshot_path","/tmp/typesense-data-snapshot"); client.operations.perform("snapshot",query);client.operations.perform("vote");client.health.retrieve();Please read CONTRIBUTING.md for details on the process for submitting pull requests to this repository.
typesense-java is distributed under the Apache 2 license.
Please open a Github issue or join our Slack Community