Skip to content

Commit ab598cd

Browse files
committed
Completing samples
1 parent c1faa79 commit ab598cd

File tree

16 files changed

+390
-104
lines changed

16 files changed

+390
-104
lines changed

astra-db-client/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</parent>
1212

1313
<properties>
14-
<openai-java.version>0.16.0</openai-java.version>
14+
<openai-java.version>0.18.2</openai-java.version>
1515
</properties>
1616

1717
<dependencies>

astra-db-client/src/test/java/com/dtsx/astra/sdk/documentation/FindById.java

Lines changed: 27 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10,45 +10,40 @@
1010
import java.util.Optional;
1111

1212
public class FindById {
13-
public static void main(String[] args) {
14-
15-
// Accessing existing DB
16-
AstraDB db = new AstraDB("<token>", "<api_endpoint>");
17-
18-
// Access existing collection
19-
AstraDBCollection collection = db.collection("collection_vector1");
20-
21-
// (1) Find a Json Result from its id
22-
Optional<JsonResult> res = collection.findById("doc1");
23-
res.ifPresent(jsonResult -> System.out.println(jsonResult.getSimilarity()));
24-
25-
// (2) find by id with Result Mapper
26-
Optional<Result<MyBean>> res2 = collection.findById("doc1", new ResultMapper<MyBean>() {
27-
@Override
28-
public Result<MyBean> map(JsonResult record) {
29-
MyBean bean = new MyBean(
30-
(String) record.getData().get("product_name"),
31-
(Double) record.getData().get("product_price"));
32-
return new Result<>(record, bean);
33-
}
34-
});
35-
36-
// (3) find by id with class Mapping
37-
Optional<Result<MyBean>> res3 = collection.findById("doc1", MyBean.class);
38-
39-
// (4) Test document existence
40-
boolean exists = collection.isDocumentExists("doc1");
41-
13+
public static void main(String[] args) {
14+
AstraDB db = new AstraDB("<token>", "<api_endpoint>");
15+
AstraDBCollection collection = db.collection("collection_vector1");
16+
17+
// (1) Find a Json Result from its id
18+
Optional<JsonResult> res = collection.findById("doc1");
19+
res.ifPresent(jsonResult -> System.out.println(jsonResult.getSimilarity()));
20+
21+
// (2) find by id with Result Mapper
22+
Optional<Result<MyBean>> res2 = collection.findById("doc1", new ResultMapper<MyBean>() {
23+
@Override
24+
public Result<MyBean> map(JsonResult record) {
25+
MyBean bean = new MyBean(
26+
(String) record.getData().get("product_name"),
27+
(Double) record.getData().get("product_price"));
28+
return new Result<>(record, bean);
29+
}
30+
});
31+
32+
// (3) find by id with class Mapping
33+
Optional<Result<MyBean>> res3 = collection.findById("doc1", MyBean.class);
34+
35+
// (4) Test document existence
36+
boolean exists = collection.isDocumentExists("doc1");
4237
}
4338

44-
public static class MyBean {
45-
@JsonProperty("product_name") String name;
39+
public static class MyBean {
40+
@JsonProperty("product_name") String name;
4641
@JsonProperty("product_price") Double price;
4742
public MyBean(String name, Double price) {
4843
this.name = name;
4944
this.price = price;
5045
}
5146
// getters and setters
52-
}
47+
}
5348

5449
}

astra-db-client/src/test/java/com/dtsx/astra/sdk/documentation/FindOne.java

Lines changed: 62 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -10,76 +10,72 @@
1010
import java.util.Map;
1111

1212
public class FindOne {
13-
public static void main(String[] args) {
13+
public static void main(String[] args) {
14+
AstraDB db = new AstraDB("<token>", "<api_endpoint>");
15+
AstraDBCollection collection = db.createCollection("collection_vector1", 14);
1416

15-
// Accessing existing DB
16-
AstraDB db = new AstraDB("<token>", "<api_endpoint>");
17+
// Retrieve first document where product_price exists
18+
collection.findOne(SelectQuery.builder()
19+
.where("product_price")
20+
.exists().build())
21+
.ifPresent(System.out::println);
1722

18-
// Access existing collection
19-
AstraDBCollection collection = db.createCollection("collection_vector1", 14);
23+
// Retrieve first document where product_price is 12.99
24+
collection.findOne(SelectQuery.builder()
25+
.where("product_price")
26+
.isEqualsTo(12.99).build())
27+
.ifPresent(System.out::println);
2028

21-
// Retrieve first document where product_price exists
22-
collection.findOne(SelectQuery.builder()
23-
.where("product_price")
24-
.exists().build())
25-
.ifPresent(System.out::println);
29+
// Retrieve first document where product_price is 12.99 and product_name is "HealthyFresh - Beef raw dog food"
30+
collection.findOne(SelectQuery.builder()
31+
.where("product_name").isEqualsTo("HealthyFresh - Chicken raw dog food")
32+
.andWhere("product_price")
33+
.isEqualsTo(9.99).build())
34+
.ifPresent(System.out::println);
2635

27-
// Retrieve first document where product_price is 12.99
28-
collection.findOne(SelectQuery.builder()
29-
.where("product_price")
30-
.isEqualsTo(12.99).build())
31-
.ifPresent(System.out::println);
36+
// Send the request as a JSON String
37+
collection.findOne("{" +
38+
"\"filter\":{" +
39+
"\"product_price\":9.99," +
40+
"\"product_name\":\"HealthyFresh - Chicken raw dog food\"}" +
41+
"}")
42+
.ifPresent(System.out::println);
3243

33-
// Retrieve first document where product_price is 12.99 and product_name is "HealthyFresh - Beef raw dog food"
34-
collection.findOne(SelectQuery.builder()
35-
.where("product_name").isEqualsTo("HealthyFresh - Chicken raw dog food")
36-
.andWhere("product_price").isEqualsTo(9.99).build())
37-
.ifPresent(System.out::println);
44+
// Limit retrieved fields to product_name and product_price
45+
collection.findOne(SelectQuery.builder()
46+
.select("product_name", "product_price")
47+
.where("product_price")
48+
.isEqualsTo(9.99)
49+
.build())
50+
.ifPresent(System.out::println);
3851

39-
// Send the request as a JSON String
40-
collection.findOne("{" +
41-
"\"filter\":{" +
42-
"\"product_price\":9.99,\"product_name\":\"HealthyFresh - Chicken raw dog food\"}" +
43-
"}")
44-
.ifPresent(System.out::println);
52+
// Add an Ann Search
53+
collection.findOne(SelectQuery.builder()
54+
.where("product_price")
55+
.isEqualsTo(9.99)
56+
.orderByAnn(new float[]{1f, 0f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f})
57+
.build());
4558

46-
// Limit retrieved fields to product_name and product_price
47-
collection
48-
.findOne(SelectQuery.builder()
49-
.select("product_name", "product_price")
50-
.where("product_price")
51-
.isEqualsTo(9.99)
52-
.build())
53-
.ifPresent(System.out::println);
59+
// Complex query with AND and OR
60+
SelectQuery sq2 = new SelectQuery();
61+
sq2.setFilter(new HashMap<>());
62+
Map<String, List<Map<String, Object>>> or1Criteria = new HashMap<>();
63+
or1Criteria.put("$or", new ArrayList<Map<String, Object>>());
64+
or1Criteria.get("$or").add(Map.of("product_price", 9.99));
65+
or1Criteria.get("$or").add(Map.of("product_name", "HealthyFresh - Beef raw dog food"));
66+
Map<String, List<Map<String, Object>>> or2Criteria = new HashMap<>();
67+
or2Criteria.put("$or", new ArrayList<Map<String, Object>>());
68+
or2Criteria.get("$or").add(Map.of("product_price", 12.99));
69+
or2Criteria.get("$or").add(Map.of("product_name", "HealthyFresh - Beef raw dog food"));
70+
List<Map<String, List<Map<String, Object>>>> andCriteria = new ArrayList<>();
71+
andCriteria.add(or1Criteria);
72+
andCriteria.add(or2Criteria);
73+
sq2.getFilter().put("$and", andCriteria);
74+
collection.findOne(sq2).ifPresent(System.out::println);
5475

55-
// Add an Ann Search
56-
collection.findOne(SelectQuery
57-
.builder()
58-
.where("product_price")
59-
.isEqualsTo(9.99)
60-
.orderByAnn(new float[]{1f, 0f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f})
61-
.build());
62-
63-
// Complex query with AND and OR
64-
SelectQuery sq2 = new SelectQuery();
65-
sq2.setFilter(new HashMap<>());
66-
Map<String, List<Map<String, Object>>> or1Criteria = new HashMap<>();
67-
or1Criteria.put("$or", new ArrayList<Map<String, Object>>());
68-
or1Criteria.get("$or").add(Map.of("product_price", 9.99));
69-
or1Criteria.get("$or").add(Map.of("product_name", "HealthyFresh - Beef raw dog food"));
70-
Map<String, List<Map<String, Object>>> or2Criteria = new HashMap<>();
71-
or2Criteria.put("$or", new ArrayList<Map<String, Object>>());
72-
or2Criteria.get("$or").add(Map.of("product_price", 12.99));
73-
or2Criteria.get("$or").add(Map.of("product_name", "HealthyFresh - Beef raw dog food"));
74-
List<Map<String, List<Map<String, Object>>>> andCriteria = new ArrayList<>();
75-
andCriteria.add(or1Criteria);
76-
andCriteria.add(or2Criteria);
77-
sq2.getFilter().put("$and", andCriteria);
78-
collection.findOne(sq2).ifPresent(System.out::println);
79-
80-
// Complex query with AND and OR as String
81-
collection.findOne("{\"filter\":{" +
82-
"\"$and\":[" +
76+
// Complex query with AND and OR as String
77+
collection.findOne("{\"filter\":{" +
78+
"\"$and\":[" +
8379
"{\"$or\":[" +
8480
" {\"product_price\":9.99}," +
8581
" {\"product_name\":\"HealthyFresh - Beef raw dog food\"}" +
@@ -90,8 +86,9 @@ public static void main(String[] args) {
9086
" {\"product_name\":\"HealthyFresh - Beef raw dog food\"}" +
9187
" ]" +
9288
"}" +
93-
"]" +
94-
"}}").ifPresent(System.out::println);
95-
}
89+
"]" +
90+
"}}")
91+
.ifPresent(System.out::println);
92+
}
9693

9794
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.dtsx.astra.sdk.documentation;
2+
3+
import com.dtsx.astra.sdk.AstraDB;
4+
import com.dtsx.astra.sdk.AstraDBCollection;
5+
import io.stargate.sdk.json.domain.Filter;
6+
import io.stargate.sdk.json.domain.JsonResult;
7+
import io.stargate.sdk.json.domain.SelectQuery;
8+
9+
import java.util.stream.Stream;
10+
11+
public class FindVector {
12+
public static void main(String[] args) {
13+
AstraDB db = new AstraDB("<token>", "<api_endpoint>");
14+
AstraDBCollection collection = db.createCollection("collection_vector1", 14);
15+
16+
float[] embeddings = new float[]{1f, 0f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f};
17+
Filter metadataFilter = new Filter().where("product_price").isEqualsTo(9.99);
18+
int maxRecord = 10;
19+
20+
// Retrieve all document with product price based on the ann search
21+
collection.findVector(SelectQuery.builder()
22+
.withFilter(metadataFilter)
23+
.orderByAnn(embeddings)
24+
.withLimit(maxRecord)
25+
.build())
26+
.forEach(System.out::println);
27+
28+
// Same using another signature
29+
Stream<JsonResult> result = collection.findVector(embeddings, metadataFilter, maxRecord);
30+
}
31+
32+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,26 @@
11
package com.dtsx.astra.sdk.documentation;
22

3+
import com.dtsx.astra.sdk.AstraDB;
4+
import com.dtsx.astra.sdk.AstraDBRepository;
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import io.stargate.sdk.json.domain.DeleteQuery;
7+
import io.stargate.sdk.json.domain.odm.Document;
8+
39
public class ObjectMappingDeleteOne {
10+
static class Product {
11+
@JsonProperty("product_name") private String name;
12+
@JsonProperty("product_price") private Double price;
13+
}
14+
15+
public static void main(String[] args) {
16+
AstraDB db = new AstraDB("<token>", "<api_endpoint>");
17+
AstraDBRepository<Product> collection1 = db
18+
.createCollection("collection_simple", Product.class);
19+
20+
// Delete document from its id
21+
collection1.deleteById("id1");
22+
23+
// Delete provided document
24+
collection1.delete(new Document<Product>().id("id2"));
25+
}
426
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,28 @@
11
package com.dtsx.astra.sdk.documentation;
22

3+
import com.dtsx.astra.sdk.AstraDB;
4+
import com.dtsx.astra.sdk.AstraDBRepository;
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import io.stargate.sdk.json.domain.odm.Result;
7+
8+
import java.util.Optional;
9+
310
public class ObjectMappingFindOne {
11+
static class Product {
12+
@JsonProperty("product_name") private String name;
13+
@JsonProperty("product_price") private Double price;
14+
}
15+
16+
public static void main(String[] args) {
17+
AstraDB db = new AstraDB("<token>", "<api_endpoint>");
18+
AstraDBRepository<Product> productRepository = db
19+
.createCollection("collection_vector1", 14, Product.class);
20+
21+
// Retrieve a products from its id
22+
Optional<Result<Product>> res1 = productRepository.findById("id1");
23+
24+
// Retrieve a products from its vector (id any)
25+
float[] vector = new float[]{1f, 0f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f};
26+
Optional<Result<Product>> res2 = productRepository.findByVector(vector);
27+
}
428
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.dtsx.astra.sdk.documentation;
2+
3+
import com.dtsx.astra.sdk.AstraDB;
4+
import com.dtsx.astra.sdk.AstraDBRepository;
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import io.stargate.sdk.json.domain.Filter;
7+
import io.stargate.sdk.json.domain.SelectQuery;
8+
import io.stargate.sdk.json.domain.odm.Result;
9+
10+
import java.util.List;
11+
import java.util.Optional;
12+
13+
public class ObjectMappingFindVector {
14+
static class Product {
15+
@JsonProperty("product_name") private String name;
16+
@JsonProperty("product_price") private Double price;
17+
}
18+
19+
public static void main(String[] args) {
20+
AstraDB db = new AstraDB("<token>", "<api_endpoint>");
21+
AstraDBRepository<Product> productRepository = db
22+
.createCollection("collection_vector1", 14, Product.class);
23+
24+
// Perform a semantic search
25+
float[] embeddings = new float[]{1f, 0f, 1f, 1f, 1f, 1f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f};
26+
Filter metadataFilter = new Filter().where("product_price").isEqualsTo(9.99);
27+
int maxRecord = 10;
28+
List<Result<Product>> res = productRepository.findVector(embeddings, metadataFilter, maxRecord);
29+
30+
// If you do not have max record or metadata filter, you can use the following
31+
productRepository.findVector(embeddings, maxRecord);
32+
productRepository.findVector(embeddings, metadataFilter);
33+
}
34+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,36 @@
11
package com.dtsx.astra.sdk.documentation;
22

3+
import com.dtsx.astra.sdk.AstraDB;
4+
import com.dtsx.astra.sdk.AstraDBRepository;
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import io.stargate.sdk.json.domain.odm.Document;
7+
8+
import java.util.List;
9+
310
public class ObjectMappingInsertMany {
11+
static class Product {
12+
@JsonProperty("product_name") private String name;
13+
@JsonProperty("product_price") private Double price;
14+
Product(String name, Double price) {
15+
this.name = name;
16+
this.price = price;
17+
}
18+
}
19+
public static void main(String[] args) {
20+
AstraDB db = new AstraDB("<token>", "<api_endpoint>");
21+
AstraDBRepository<Product> productRepository = db
22+
.createCollection("collection_vector1", 14, Product.class);
23+
24+
// Insert documents into the collection (IDs are generated automatically)
25+
List<String> identifiers = productRepository.saveAll(
26+
List.of(
27+
new Document<Product>()
28+
.vector(new float[]{1f, 0f, 1f, 1f, .5f, 1f, 0f, 0.3f, 0f, 0f, 0f, 0f, 0f, 0f})
29+
.data(new Product("product1", 9.99)),
30+
new Document<Product>()
31+
.vector(new float[]{1f, 0f, 1f, 1f, .5f, 1f, 0f, 0.3f, 0f, 0f, 0f, 0f, 0f, 0f})
32+
.data(new Product("product2", 12.99))
33+
)
34+
);
35+
}
436
}

0 commit comments

Comments
 (0)