Skip to content

Commit 131ba7f

Browse files
DOC-5842 updated code for Jedis index/query example
1 parent 7b8a356 commit 131ba7f

File tree

1 file changed

+234
-0
lines changed

1 file changed

+234
-0
lines changed
Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
// EXAMPLE: java_home_json
2+
// BINDER_ID jedis-java_home_json
3+
// REMOVE_START
4+
package io.redis.examples;
5+
6+
import org.junit.jupiter.api.Test;
7+
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
8+
import static org.junit.jupiter.api.Assertions.assertEquals;
9+
// REMOVE_END
10+
// STEP_START import
11+
import redis.clients.jedis.UnifiedJedis;
12+
import redis.clients.jedis.exceptions.JedisDataException;
13+
import redis.clients.jedis.json.Path2;
14+
import redis.clients.jedis.search.*;
15+
import redis.clients.jedis.search.aggr.*;
16+
import redis.clients.jedis.search.schemafields.*;
17+
import org.json.JSONObject;
18+
19+
import java.util.HashMap;
20+
import java.util.List;
21+
import java.util.Map;
22+
// STEP_END
23+
24+
public class HomeJsonExample {
25+
26+
@Test
27+
public void run() {
28+
29+
// STEP_START create_data
30+
JSONObject user1 = new JSONObject()
31+
.put("name", "Paul John")
32+
.put("email", "[email protected]")
33+
.put("age", 42)
34+
.put("city", "London");
35+
36+
JSONObject user2 = new JSONObject()
37+
.put("name", "Eden Zamir")
38+
.put("email", "[email protected]")
39+
.put("age", 29)
40+
.put("city", "Tel Aviv");
41+
42+
JSONObject user3 = new JSONObject()
43+
.put("name", "Paul Zamir")
44+
.put("email", "[email protected]")
45+
.put("age", 35)
46+
.put("city", "Tel Aviv");
47+
// STEP_END
48+
49+
// STEP_START connect
50+
UnifiedJedis jedis = new UnifiedJedis("redis://localhost:6379");
51+
// STEP_END
52+
53+
// STEP_START cleanup_json
54+
try {jedis.ftDropIndex("idx:users");} catch (JedisDataException j){}
55+
jedis.del("user:1", "user:2", "user:3");
56+
// STEP_END
57+
58+
// STEP_START make_index
59+
SchemaField[] schema = {
60+
TextField.of("$.name").as("name"),
61+
TextField.of("$.city").as("city"),
62+
NumericField.of("$.age").as("age")
63+
};
64+
65+
String createResult = jedis.ftCreate("idx:users",
66+
FTCreateParams.createParams()
67+
.on(IndexDataType.JSON)
68+
.addPrefix("user:"),
69+
schema
70+
);
71+
72+
System.out.println(createResult); // >>> OK
73+
// STEP_END
74+
// REMOVE_START
75+
assertEquals("OK", createResult);
76+
// REMOVE_END
77+
78+
// STEP_START add_data
79+
String user1Set = jedis.jsonSet("user:1", new Path2("$"), user1);
80+
String user2Set = jedis.jsonSet("user:2", new Path2("$"), user2);
81+
String user3Set = jedis.jsonSet("user:3", new Path2("$"), user3);
82+
// STEP_END
83+
// REMOVE_START
84+
assertEquals("OK", user1Set);
85+
assertEquals("OK", user2Set);
86+
assertEquals("OK", user3Set);
87+
// REMOVE_END
88+
89+
// STEP_START query1
90+
SearchResult findPaulResult = jedis.ftSearch("idx:users",
91+
"Paul @age:[30 40]"
92+
);
93+
94+
System.out.println(findPaulResult.getTotalResults()); // >>> 1
95+
96+
List<Document> paulDocs = findPaulResult.getDocuments();
97+
98+
for (Document doc: paulDocs) {
99+
System.out.println(doc.getId());
100+
}
101+
// >>> user:3
102+
// STEP_END
103+
// REMOVE_START
104+
assertEquals("user:3", paulDocs.get(0).getId());
105+
// REMOVE_END
106+
107+
// STEP_START query2
108+
SearchResult citiesResult = jedis.ftSearch("idx:users",
109+
"Paul",
110+
FTSearchParams.searchParams()
111+
.returnFields("city")
112+
);
113+
114+
System.out.println(citiesResult.getTotalResults()); // >>> 2
115+
116+
for (Document doc: citiesResult.getDocuments()) {
117+
System.out.println(doc.getId());
118+
}
119+
// >>> user:1
120+
// >>> user:3
121+
// STEP_END
122+
// REMOVE_START
123+
assertArrayEquals(
124+
new String[] {"user:1", "user:3"},
125+
citiesResult.getDocuments().stream().map(Document::getId).sorted().toArray()
126+
);
127+
// REMOVE_END
128+
129+
// STEP_START query3
130+
AggregationResult aggResult = jedis.ftAggregate("idx:users",
131+
new AggregationBuilder("*")
132+
.groupBy("@city", Reducers.count().as("count"))
133+
);
134+
135+
System.out.println(aggResult.getTotalResults()); // >>> 2
136+
137+
for (Row cityRow: aggResult.getRows()) {
138+
System.out.printf("%s - %d%n",
139+
cityRow.getString("city"), cityRow.getLong("count"));
140+
}
141+
// >>> London - 1
142+
// >>> Tel Aviv - 2
143+
// STEP_END
144+
// REMOVE_START
145+
assertArrayEquals(
146+
new String[] {"London - 1", "Tel Aviv - 2"},
147+
aggResult.getRows().stream()
148+
.map(r -> r.getString("city") + " - " + r.getString("count"))
149+
.sorted().toArray());
150+
// REMOVE_END
151+
152+
// STEP_START cleanup_hash
153+
try {jedis.ftDropIndex("hash-idx:users");} catch (JedisDataException j){}
154+
jedis.del("huser:1", "huser:2", "huser:3");
155+
// STEP_END
156+
157+
// STEP_START make_hash_index
158+
SchemaField[] hashSchema = {
159+
TextField.of("name"),
160+
TextField.of("city"),
161+
NumericField.of("age")
162+
};
163+
164+
String hashCreateResult = jedis.ftCreate("hash-idx:users",
165+
FTCreateParams.createParams()
166+
.on(IndexDataType.HASH)
167+
.addPrefix("huser:"),
168+
hashSchema
169+
);
170+
171+
System.out.println(hashCreateResult); // >>> OK
172+
// STEP_END
173+
// REMOVE_START
174+
assertEquals("OK", hashCreateResult);
175+
// REMOVE_END
176+
177+
// STEP_START add_hash_data
178+
Map<String, String> user1Info = new HashMap<>();
179+
user1Info.put("name", "Paul John");
180+
user1Info.put("email", "[email protected]");
181+
user1Info.put("age", "42");
182+
user1Info.put("city", "London");
183+
long huser1Set = jedis.hset("huser:1", user1Info);
184+
185+
System.out.println(huser1Set); // >>> 4
186+
187+
Map<String, String> user2Info = new HashMap<>();
188+
user2Info.put("name", "Eden Zamir");
189+
user2Info.put("email", "[email protected]");
190+
user2Info.put("age", "29");
191+
user2Info.put("city", "Tel Aviv");
192+
long huser2Set = jedis.hset("huser:2", user2Info);
193+
194+
System.out.println(huser2Set); // >>> 4
195+
196+
Map<String, String> user3Info = new HashMap<>();
197+
user3Info.put("name", "Paul Zamir");
198+
user3Info.put("email", "[email protected]");
199+
user3Info.put("age", "35");
200+
user3Info.put("city", "Tel Aviv");
201+
long huser3Set = jedis.hset("huser:3", user3Info);
202+
203+
System.out.println(huser3Set); // >>> 4
204+
// STEP_END
205+
// REMOVE_START
206+
assertEquals(4, huser1Set);
207+
assertEquals(4, huser2Set);
208+
assertEquals(4, huser3Set);
209+
// REMOVE_END
210+
211+
// STEP_START query1_hash
212+
SearchResult findPaulHashResult = jedis.ftSearch("hash-idx:users",
213+
"Paul @age:[30 40]"
214+
);
215+
216+
System.out.println(findPaulHashResult.getTotalResults()); // >>> 1
217+
218+
List<Document> paulHashDocs = findPaulHashResult.getDocuments();
219+
220+
for (Document doc: paulHashDocs) {
221+
System.out.println(doc.getId());
222+
}
223+
// >>> user:3
224+
// STEP_END
225+
// REMOVE_START
226+
assertEquals("huser:3", paulHashDocs.get(0).getId());
227+
// REMOVE_END
228+
229+
// STEP_START close
230+
jedis.close();
231+
// STEP_END
232+
}
233+
}
234+

0 commit comments

Comments
 (0)