- TypeScript
- Redis CLI
Copy
Ask AI
import { Redis, s } from "@upstash/redis";
const redis = Redis.fromEnv();
// Create an index for product data stored as JSON
const index = await redis.search.createIndex({
name: "products",
dataType: "json",
prefix: "product:",
schema: s.object({
name: s.string(),
description: s.string(),
category: s.string().noTokenize(),
price: s.number("F64"),
inStock: s.boolean(),
}),
});
// Add some products (standard Redis JSON commands)
await redis.json.set("product:1", "$", {
name: "Wireless Headphones",
description:
"Premium noise-cancelling wireless headphones with 30-hour battery life",
category: "electronics",
price: 199.99,
inStock: true,
});
await redis.json.set("product:2", "$", {
name: "Running Shoes",
description: "Lightweight running shoes with advanced cushioning technology",
category: "sports",
price: 129.99,
inStock: true,
});
await redis.json.set("product:3", "$", {
name: "Coffee Maker",
description: "Programmable coffee maker with built-in grinder",
category: "kitchen",
price: 89.99,
inStock: false,
});
// Wait for indexing to complete (optional, for immediate queries)
await index.waitIndexing();
// Search for products
const wirelessProducts = await index.query({
filter: { description: "wireless" },
});
for (const product of wirelessProducts) {
console.log(product);
}
// Search with more filters
const runningProducts = await index.query({
filter: { description: "running", inStock: true },
});
for (const product of runningProducts) {
console.log(product);
}
// Count matching documents
const count = await index.count({ filter: { price: { $lt: 150 } } });
console.log(count);
Copy
Ask AI
# Create an index for product data stored as JSON
SEARCH.CREATE products ON JSON PREFIX 1 product: SCHEMA name TEXT description TEXT category TEXT NOTOKENIZE price F64 FAST inStock BOOL
# Add some products (standard Redis JSON commands)
JSON.SET product:1 $ '{"name": "Wireless Headphones", "description": "Premium noise-cancelling wireless headphones with 30-hour battery life", "category": "electronics", "price": 199.99, "inStock": true}'
JSON.SET product:2 $ '{"name": "Running Shoes", "description": "Lightweight running shoes with advanced cushioning technology", "category": "sports", "price": 129.99, "inStock": true}'
JSON.SET product:3 $ '{"name": "Coffee Maker", "description": "Programmable coffee maker with built-in grinder", "category": "kitchen", "price": 89.99, "inStock": false}'
# Wait for indexing to complete (optional, for immediate queries)
SEARCH.WAITINDEXING products
# Search for products
SEARCH.QUERY products '{"description": "wireless"}'
# Search with more filters
SEARCH.QUERY products '{"description": "running", "inStock": true}'
# Count matching documents
SEARCH.COUNT products '{"price": {"$lt": 150}}'