Java client for Typesense
See the codeJava 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>
import org.typesense.api.*;
import org.typesense.model.*;
import org.typesense.resources.*;
typesense-java is compatible with Java versions 8+ and Android SDK versions 26+
List<Node> nodes = new ArrayList<>();
nodes.add(
new Node(
"http", // For Typesense Cloud use https
"localhost", // For Typesense Cloud use xxx.a1.typesense.net
"8108" // For Typesense Cloud use 443
)
);
Configuration configuration = new Configuration(nodes, Duration.ofSeconds(2),"<API_KEY>");
Client client = new Client(configuration);
List<Field> fields = new ArrayList<>();
fields.add(new Field().name("countryName").type(FieldTypes.STRING));
fields.add(new Field().name("capital").type(FieldTypes.STRING));
fields.add(new Field().name("gdp").type(FieldTypes.INT32).facet(true).sort(true));
CollectionSchema collectionSchema = new CollectionSchema();
collectionSchema.name("Countries").fields(fields).defaultSortingField("gdp");
client.collections().create(collectionSchema);
String schemaJson = new String(
Files.readAllBytes(Paths.get("schema.json")),
StandardCharsets.UTF_8
);
client.collections().create(schemaJson);
Map<String, Object> hmap = new HashMap<>();
hmap.put("countryName","India");
hmap.put("capital","Delhi");
hmap.put("gdp", 10);
client.collections("Countries").documents().create(hmap);
Map<String, Object> hmap = new HashMap<>();
hmap.put("countryName","India");
hmap.put("capital","Delhi");
hmap.put("gdp", 5);
client.collections("Countries").documents().upsert(hmap);
ImportDocumentsParameters queryParameters = new ImportDocumentsParameters();
queryParameters.action("create");
String documentList = "{\"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)
SearchParameters searchParameters = new SearchParameters()
.q("tokoyo")
.queryBy("countryName,capital")
.prefix("true,false");
SearchResult searchResult = client.collections("Countries").documents().search(searchParameters);
Map<String, Object> hmap = new HashMap<>();
hmap.put("gdp", 8);
client.collections("Countries").documents("28").update(hmap);
client.collections("Countries").documents("28").retrieve();
client.collections("Countries").documents("28").delete();
DeleteDocumentsParameters deleteDocumentsParameters = new DeleteDocumentsParameters();
deleteDocumentsParameters.filterBy("gdp:=[2,8]");
deleteDocumentsParameters.batchSize(10);
client.collections("Countries").retrieve();
client.collections().retrieve();
client.collections("Countries").delete();
client.collections("Countries").documents().export();
AnalyticsRuleSchema analyticsRule = new AnalyticsRuleSchema();
analyticsRule.setName("popular-queries");
analyticsRule.setType(AnalyticsRuleSchema.TypeEnum.POPULAR_QUERIES);
analyticsRule.setParams(new AnalyticsRuleParameters()
.source(new AnalyticsRuleParametersSource()
.collections(Arrays.asList("Countries")))
.destination(new AnalyticsRuleParametersDestination()
.collection("top_searches")));
client.analytics().rules().create(analyticsRule);
AnalyticsRuleUpsertSchema analyticsRule = new AnalyticsRuleUpsertSchema()
.type(AnalyticsRuleUpsertSchema.TypeEnum.NOHITS_QUERIES)
.params(new AnalyticsRuleParameters()
.source(new AnalyticsRuleParametersSource()
.collections(Arrays.asList("Countries")))
.destination(new AnalyticsRuleParametersDestination()
.collection("failed_searches")));
client.analytics().rules().upsert("failed-searches", analyticsRule);
AnalyticsRulesRetrieveSchema rules = client.analytics().rules().retrieve();
AnalyticsRuleSchema rule = client.analytics().rules("failed-searches").retrieve();
client.analytics().rules("failed-searches").delete();
AnalyticsEventCreateSchema analyticsEvent = new AnalyticsEventCreateSchema()
.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 = new ArrayList<>();
stopwords.add("the");
stopwords.add("of");
stopwords.add("and");
StopwordsSetUpsertSchema stopwordsSet = new StopwordsSetUpsertSchema();
stopwordsSet.stopwords(stopwords);
client.stopwords().upsert("common-words", stopwordsSet);
StopwordsSetRetrieveSchema set = client.stopwords("common-words").retrieve();
StopwordsSetsRetrieveAllSchema sets = client.stopwords().retrieve();
client.stopwords("common-words").delete();
ApiKeySchema apiKeySchema = new ApiKeySchema();
List<String> actionValues = new ArrayList<>();
List<String> collectionValues = new ArrayList<>();
actionValues.add("*");
collectionValues.add("*");
apiKeySchema.description("Admin Key").actions(actionValues).collections(collectionValues);
client.keys().create(apiKeySchema);
ApiKeySchema apiKeySchema = new ApiKeySchema();
List<String> actionValues = new ArrayList<>();
List<String> collectionValues = new ArrayList<>();
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();
SearchOverrideSchema searchOverrideSchema = new SearchOverrideSchema();
List<SearchOverrideInclude> searchOverrideIncludes = new ArrayList<>();
searchOverrideIncludes.add(new SearchOverrideInclude().id("422").position(1));
searchOverrideIncludes.add(new SearchOverrideInclude().id("54").position(2));
List<SearchOverrideExclude> searchOverrideExcludes = new ArrayList<>();
searchOverrideExcludes.add(new SearchOverrideExclude().id("287"));
searchOverrideSchema.rule(new SearchOverrideRule().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();
CollectionAliasSchema collectionAliasSchema = new CollectionAliasSchema();
collectionAliasSchema.collectionName("Countries");
client.aliases().upsert("countries2", collectionAliasSchema)
client.aliases("countries2").retrieve();
client.aliases().retrieve();
client.aliases("countries2").delete();
SearchSynonymSchema synonym = new SearchSynonymSchema();
synonym.addSynonymsItem("France").addSynonymsItem("Germany").addSynonymsItem("Sweden");
client.collections("Countries").synonyms().upsert("country-synonyms",synonym)
SearchSynonymSchema synonym = new SearchSynonymSchema();
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 = new HashMap<>();
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
Java client for Typesense
See the codeJava 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>
import org.typesense.api.*;
import org.typesense.model.*;
import org.typesense.resources.*;
typesense-java is compatible with Java versions 8+ and Android SDK versions 26+
List<Node> nodes = new ArrayList<>();
nodes.add(
new Node(
"http", // For Typesense Cloud use https
"localhost", // For Typesense Cloud use xxx.a1.typesense.net
"8108" // For Typesense Cloud use 443
)
);
Configuration configuration = new Configuration(nodes, Duration.ofSeconds(2),"<API_KEY>");
Client client = new Client(configuration);
List<Field> fields = new ArrayList<>();
fields.add(new Field().name("countryName").type(FieldTypes.STRING));
fields.add(new Field().name("capital").type(FieldTypes.STRING));
fields.add(new Field().name("gdp").type(FieldTypes.INT32).facet(true).sort(true));
CollectionSchema collectionSchema = new CollectionSchema();
collectionSchema.name("Countries").fields(fields).defaultSortingField("gdp");
client.collections().create(collectionSchema);
String schemaJson = new String(
Files.readAllBytes(Paths.get("schema.json")),
StandardCharsets.UTF_8
);
client.collections().create(schemaJson);
Map<String, Object> hmap = new HashMap<>();
hmap.put("countryName","India");
hmap.put("capital","Delhi");
hmap.put("gdp", 10);
client.collections("Countries").documents().create(hmap);
Map<String, Object> hmap = new HashMap<>();
hmap.put("countryName","India");
hmap.put("capital","Delhi");
hmap.put("gdp", 5);
client.collections("Countries").documents().upsert(hmap);
ImportDocumentsParameters queryParameters = new ImportDocumentsParameters();
queryParameters.action("create");
String documentList = "{\"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)
SearchParameters searchParameters = new SearchParameters()
.q("tokoyo")
.queryBy("countryName,capital")
.prefix("true,false");
SearchResult searchResult = client.collections("Countries").documents().search(searchParameters);
Map<String, Object> hmap = new HashMap<>();
hmap.put("gdp", 8);
client.collections("Countries").documents("28").update(hmap);
client.collections("Countries").documents("28").retrieve();
client.collections("Countries").documents("28").delete();
DeleteDocumentsParameters deleteDocumentsParameters = new DeleteDocumentsParameters();
deleteDocumentsParameters.filterBy("gdp:=[2,8]");
deleteDocumentsParameters.batchSize(10);
client.collections("Countries").retrieve();
client.collections().retrieve();
client.collections("Countries").delete();
client.collections("Countries").documents().export();
AnalyticsRuleSchema analyticsRule = new AnalyticsRuleSchema();
analyticsRule.setName("popular-queries");
analyticsRule.setType(AnalyticsRuleSchema.TypeEnum.POPULAR_QUERIES);
analyticsRule.setParams(new AnalyticsRuleParameters()
.source(new AnalyticsRuleParametersSource()
.collections(Arrays.asList("Countries")))
.destination(new AnalyticsRuleParametersDestination()
.collection("top_searches")));
client.analytics().rules().create(analyticsRule);
AnalyticsRuleUpsertSchema analyticsRule = new AnalyticsRuleUpsertSchema()
.type(AnalyticsRuleUpsertSchema.TypeEnum.NOHITS_QUERIES)
.params(new AnalyticsRuleParameters()
.source(new AnalyticsRuleParametersSource()
.collections(Arrays.asList("Countries")))
.destination(new AnalyticsRuleParametersDestination()
.collection("failed_searches")));
client.analytics().rules().upsert("failed-searches", analyticsRule);
AnalyticsRulesRetrieveSchema rules = client.analytics().rules().retrieve();
AnalyticsRuleSchema rule = client.analytics().rules("failed-searches").retrieve();
client.analytics().rules("failed-searches").delete();
AnalyticsEventCreateSchema analyticsEvent = new AnalyticsEventCreateSchema()
.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 = new ArrayList<>();
stopwords.add("the");
stopwords.add("of");
stopwords.add("and");
StopwordsSetUpsertSchema stopwordsSet = new StopwordsSetUpsertSchema();
stopwordsSet.stopwords(stopwords);
client.stopwords().upsert("common-words", stopwordsSet);
StopwordsSetRetrieveSchema set = client.stopwords("common-words").retrieve();
StopwordsSetsRetrieveAllSchema sets = client.stopwords().retrieve();
client.stopwords("common-words").delete();
ApiKeySchema apiKeySchema = new ApiKeySchema();
List<String> actionValues = new ArrayList<>();
List<String> collectionValues = new ArrayList<>();
actionValues.add("*");
collectionValues.add("*");
apiKeySchema.description("Admin Key").actions(actionValues).collections(collectionValues);
client.keys().create(apiKeySchema);
ApiKeySchema apiKeySchema = new ApiKeySchema();
List<String> actionValues = new ArrayList<>();
List<String> collectionValues = new ArrayList<>();
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();
SearchOverrideSchema searchOverrideSchema = new SearchOverrideSchema();
List<SearchOverrideInclude> searchOverrideIncludes = new ArrayList<>();
searchOverrideIncludes.add(new SearchOverrideInclude().id("422").position(1));
searchOverrideIncludes.add(new SearchOverrideInclude().id("54").position(2));
List<SearchOverrideExclude> searchOverrideExcludes = new ArrayList<>();
searchOverrideExcludes.add(new SearchOverrideExclude().id("287"));
searchOverrideSchema.rule(new SearchOverrideRule().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();
CollectionAliasSchema collectionAliasSchema = new CollectionAliasSchema();
collectionAliasSchema.collectionName("Countries");
client.aliases().upsert("countries2", collectionAliasSchema)
client.aliases("countries2").retrieve();
client.aliases().retrieve();
client.aliases("countries2").delete();
SearchSynonymSchema synonym = new SearchSynonymSchema();
synonym.addSynonymsItem("France").addSynonymsItem("Germany").addSynonymsItem("Sweden");
client.collections("Countries").synonyms().upsert("country-synonyms",synonym)
SearchSynonymSchema synonym = new SearchSynonymSchema();
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 = new HashMap<>();
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