You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-07-31 05:44:24 +03:00
89 lines
2.2 KiB
JavaScript
89 lines
2.2 KiB
JavaScript
// This example demonstrates how to use RediSearch to index and query data
|
|
// stored in Redis hashes.
|
|
|
|
import { createClient, SCHEMA_FIELD_TYPE } from 'redis';
|
|
|
|
const client = createClient();
|
|
|
|
await client.connect();
|
|
|
|
// Create an index...
|
|
try {
|
|
// Documentation: https://redis.io/commands/ft.create/
|
|
await client.ft.create('idx:animals', {
|
|
name: {
|
|
type: SCHEMA_FIELD_TYPE.TEXT,
|
|
SORTABLE: true
|
|
},
|
|
species: SCHEMA_FIELD_TYPE.TAG,
|
|
age: SCHEMA_FIELD_TYPE.NUMERIC
|
|
}, {
|
|
ON: 'HASH',
|
|
PREFIX: 'noderedis:animals'
|
|
});
|
|
} catch (e) {
|
|
if (e.message === 'Index already exists') {
|
|
console.log('Index exists already, skipped creation.');
|
|
} else {
|
|
// Something went wrong, perhaps RediSearch isn't installed...
|
|
console.error(e);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
// Add some sample data...
|
|
// https://redis.io/commands/hset/
|
|
await Promise.all([
|
|
client.hSet('noderedis:animals:1', {name: 'Fluffy', species: 'cat', age: 3}),
|
|
client.hSet('noderedis:animals:2', {name: 'Ginger', species: 'cat', age: 4}),
|
|
client.hSet('noderedis:animals:3', {name: 'Rover', species: 'dog', age: 9}),
|
|
client.hSet('noderedis:animals:4', {name: 'Fido', species: 'dog', age: 7})
|
|
]);
|
|
|
|
// Perform a search query, find all the dogs... sort by age, descending.
|
|
// Documentation: https://redis.io/commands/ft.search/
|
|
// Query syntax: https://redis.io/docs/stack/search/reference/query_syntax/
|
|
const results = await client.ft.search(
|
|
'idx:animals',
|
|
'@species:{dog}',
|
|
{
|
|
SORTBY: {
|
|
BY: 'age',
|
|
DIRECTION: 'DESC' // or 'ASC (default if DIRECTION is not present)
|
|
}
|
|
}
|
|
);
|
|
|
|
// results:
|
|
// {
|
|
// total: 2,
|
|
// documents: [
|
|
// {
|
|
// id: 'noderedis:animals:3',
|
|
// value: {
|
|
// name: 'Rover',
|
|
// species: 'dog',
|
|
// age: '9'
|
|
// }
|
|
// },
|
|
// {
|
|
// id: 'noderedis:animals:4',
|
|
// value: {
|
|
// name: 'Fido',
|
|
// species: 'dog',
|
|
// age: '7'
|
|
// }
|
|
// }
|
|
// ]
|
|
// }
|
|
|
|
console.log(`Results found: ${results.total}.`);
|
|
|
|
for (const doc of results.documents) {
|
|
// noderedis:animals:3: Rover, 9 years old.
|
|
// noderedis:animals:4: Fido, 7 years old.
|
|
console.log(`${doc.id}: ${doc.value.name}, ${doc.value.age} years old.`);
|
|
}
|
|
|
|
client.destroy();
|