Skip to content

Commit 9b88636

Browse files
DOC-4345 added JSON search examples for home page (#4010)
* DOC-4345 added JSON search examples for home page * DOC-4345 made blank lines more consistent * Update src/test/java/io/redis/examples/HomeJsonExample.java Co-authored-by: M Sazzadul Hoque <[email protected]> * Update src/test/java/io/redis/examples/HomeJsonExample.java Co-authored-by: M Sazzadul Hoque <[email protected]> * Update src/test/java/io/redis/examples/HomeJsonExample.java Co-authored-by: M Sazzadul Hoque <[email protected]> * Update src/test/java/io/redis/examples/HomeJsonExample.java Co-authored-by: M Sazzadul Hoque <[email protected]> * DOC-4345 applied feedback * Update src/test/java/io/redis/examples/HomeJsonExample.java --------- Co-authored-by: M Sazzadul Hoque <[email protected]>
1 parent ac5d051 commit 9b88636

File tree

1 file changed

+155
-0
lines changed

1 file changed

+155
-0
lines changed

Diff for: src/test/java/io/redis/examples/HomeJsonExample.java

+155
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
// EXAMPLE: java_home_json
2+
// REMOVE_START
3+
package io.redis.examples;
4+
5+
import org.junit.Assert;
6+
import org.junit.Test;
7+
8+
// REMOVE_END
9+
// STEP_START import
10+
import redis.clients.jedis.UnifiedJedis;
11+
import redis.clients.jedis.exceptions.JedisDataException;
12+
import redis.clients.jedis.json.Path2;
13+
import redis.clients.jedis.search.*;
14+
import redis.clients.jedis.search.aggr.*;
15+
import redis.clients.jedis.search.schemafields.*;
16+
import org.json.JSONObject;
17+
import java.util.List;
18+
// STEP_END
19+
20+
// HIDE_START
21+
public class HomeJsonExample {
22+
@Test
23+
public void run() {
24+
// HIDE_END
25+
// STEP_START connect
26+
UnifiedJedis jedis = new UnifiedJedis("redis://localhost:6379");
27+
// STEP_END
28+
//REMOVE_START
29+
// Clear the indexes and keys here before using them in tests.
30+
try {jedis.ftDropIndex("idx:users");} catch (JedisDataException j){}
31+
jedis.del("bike", "bike:1", "crashes", "newbike", "riders", "bikes:inventory");
32+
//REMOVE_END
33+
34+
// STEP_START create_data
35+
JSONObject user1 = new JSONObject()
36+
.put("name", "Paul John")
37+
.put("email", "[email protected]")
38+
.put("age", 42)
39+
.put("city", "London");
40+
41+
JSONObject user2 = new JSONObject()
42+
.put("name", "Eden Zamir")
43+
.put("email", "[email protected]")
44+
.put("age", 29)
45+
.put("city", "Tel Aviv");
46+
47+
JSONObject user3 = new JSONObject()
48+
.put("name", "Paul Zamir")
49+
.put("email", "[email protected]")
50+
.put("age", 35)
51+
.put("city", "Tel Aviv");
52+
// STEP_END
53+
54+
// STEP_START make_index
55+
SchemaField[] schema = {
56+
TextField.of("$.name").as("name"),
57+
TextField.of("$.city").as("city"),
58+
NumericField.of("$.age").as("age")
59+
};
60+
61+
String createResult = jedis.ftCreate("idx:users",
62+
FTCreateParams.createParams()
63+
.on(IndexDataType.JSON)
64+
.addPrefix("user:"),
65+
schema
66+
);
67+
68+
System.out.println(createResult); // >>> OK
69+
// STEP_END
70+
// REMOVE_START
71+
Assert.assertEquals("OK", createResult);
72+
// REMOVE_END
73+
74+
// STEP_START add_data
75+
String user1Set = jedis.jsonSet("user:1", new Path2("$"), user1);
76+
String user2Set = jedis.jsonSet("user:2", new Path2("$"), user2);
77+
String user3Set = jedis.jsonSet("user:3", new Path2("$"), user3);
78+
// STEP_END
79+
// REMOVE_START
80+
Assert.assertEquals("OK", user1Set);
81+
Assert.assertEquals("OK", user2Set);
82+
Assert.assertEquals("OK", user3Set);
83+
// REMOVE_END
84+
85+
// STEP_START query1
86+
SearchResult findPaulResult = jedis.ftSearch("idx:users",
87+
"Paul @age:[30 40]"
88+
);
89+
90+
System.out.println(findPaulResult.getTotalResults()); // >>> 1
91+
92+
List<Document> paulDocs = findPaulResult.getDocuments();
93+
94+
for (Document doc: paulDocs) {
95+
System.out.println(doc.getId());
96+
}
97+
// >>> user:3
98+
// STEP_END
99+
// REMOVE_START
100+
Assert.assertEquals("user:3", paulDocs.get(0).getId());
101+
// REMOVE_END
102+
103+
// STEP_START query2
104+
SearchResult citiesResult = jedis.ftSearch("idx:users",
105+
"Paul",
106+
FTSearchParams.searchParams()
107+
.returnFields("city")
108+
);
109+
110+
System.out.println(citiesResult.getTotalResults()); // >>> 2
111+
112+
for (Document doc: citiesResult.getDocuments()) {
113+
System.out.println(doc.getId());
114+
}
115+
// >>> user:1
116+
// >>> user:3
117+
// STEP_END
118+
// REMOVE_START
119+
Assert.assertArrayEquals(
120+
new String[] {"user:1", "user:3"},
121+
citiesResult.getDocuments().stream().map(Document::getId).sorted().toArray()
122+
);
123+
// REMOVE_END
124+
125+
// STEP_START query3
126+
AggregationResult aggResult = jedis.ftAggregate("idx:users",
127+
new AggregationBuilder("*")
128+
.groupBy("@city", Reducers.count().as("count"))
129+
);
130+
131+
System.out.println(aggResult.getTotalResults()); // >>> 2
132+
133+
for (Row cityRow: aggResult.getRows()) {
134+
System.out.println(String.format(
135+
"%s - %d",
136+
cityRow.getString("city"), cityRow.getLong("count"))
137+
);
138+
}
139+
// >>> London - 1
140+
// >>> Tel Aviv - 2
141+
// STEP_END
142+
// REMOVE_START
143+
Assert.assertArrayEquals(
144+
new String[] {"London - 1", "Tel Aviv - 2"},
145+
aggResult.getRows().stream()
146+
.map(r -> r.getString("city") + " - " + r.getString("count"))
147+
.sorted().toArray());
148+
// REMOVE_END
149+
// HIDE_START
150+
151+
jedis.close();
152+
}
153+
}
154+
// HIDE_END
155+

0 commit comments

Comments
 (0)