Class: IndexSchema
Defined in: schema/schema.ts:145
A schema definition for a search index in Redis, used in RedisVL for configuring index settings and organizing vector and metadata fields.
Accessors
fieldNames
Get Signature
get fieldNames():
string[]
Defined in: schema/schema.ts:167
A list of field names associated with the index schema.
Returns
string[]
A list of field names from the schema
Constructors
Constructor
new IndexSchema(
options):IndexSchema
Defined in: schema/schema.ts:153
Parameters
options
input
Returns
IndexSchema
Methods
addField()
addField(
fieldInputs):void
Defined in: schema/schema.ts:230
Adds a single field to the index schema.
Parameters
fieldInputs
Field definition object with name, type, and optional attributes
Returns
void
Throws
If a field with the same name already exists
Example
schema.addField({ name: 'title', type: 'text' });
schema.addField({
name: 'embedding',
type: 'vector',
attrs: { dims: 1536, algorithm: 'hnsw' }
});
addFields()
addFields(
fields):void
Defined in: schema/schema.ts:260
Adds multiple fields to the index schema.
Parameters
fields
Array of field definition objects
Returns
void
Throws
If any field has a duplicate name
Example
schema.addFields([
{ name: 'title', type: 'text' },
{ name: 'category', type: 'tag' },
{ name: 'price', type: 'numeric' }
]);
removeField()
removeField(
fieldName):void
Defined in: schema/schema.ts:276
Removes a field from the schema by name.
Parameters
fieldName
string
The name of the field to remove
Returns
void
Example
schema.removeField('old_field');
toObject()
toObject():
object
Defined in: schema/schema.ts:414
Serialize the index schema to a plain object. Converts camelCase properties to snake_case for YAML/JSON compatibility.
Returns
object
The index schema as a plain object with snake_case keys
fields
fields:
object[]
index
index:
object
index.key_separator
key_separator:
string
index.name
name:
string
index.prefix
prefix:
string|string[]
index.stopwords?
optionalstopwords?:string[]
index.storage_type
storage_type:
string
version
version:
"0.1.0"
Example
const schema = new IndexSchema({ index: indexInfo });
const obj = schema.toObject();
console.log(obj.index.name);
console.log(obj.index.storage_type);
toYAML()
toYAML(
filePath,overwrite?):Promise<void>
Defined in: schema/schema.ts:483
Write the index schema to a YAML file.
Parameters
filePath
string
The path to the YAML file
overwrite?
boolean = true
Whether to overwrite the file if it already exists (default: true)
Returns
Promise<void>
Throws
Error if the file already exists and overwrite is false
Example
const schema = new IndexSchema({ index: indexInfo });
await schema.toYAML('schema.yaml');
fromObject()
staticfromObject(data):IndexSchema
Defined in: schema/schema.ts:307
Create an IndexSchema from a plain object. Accepts both snake_case (from YAML/JSON files) and camelCase (from TypeScript) property names.
Parameters
data
The index schema data
fields?
FieldInput[] | Record<string, FieldInput>
index
any
version?
"0.1.0"
Returns
IndexSchema
A new IndexSchema instance
Example
// From YAML/JSON (snake_case)
const schema = IndexSchema.fromObject({
index: {
name: 'docs-index',
prefix: 'docs',
storage_type: 'hash', // snake_case from YAML/JSON
},
fields: [
{ name: 'doc-id', type: 'tag' },
{ name: 'title', type: 'text' }
]
});
fromYAML()
staticfromYAML(filePath):Promise<IndexSchema>
Defined in: schema/schema.ts:378
Create an IndexSchema from a YAML file.
Parameters
filePath
string
The path to the YAML file
Returns
Promise<IndexSchema>
A new IndexSchema instance
Throws
Error if the file path is invalid
Throws
Error if the file does not exist
Example
const schema = await IndexSchema.fromYAML('schema.yaml');
console.log(schema.index.name);
Properties
fields
fields:
Record<string,BaseField>
Defined in: schema/schema.ts:149
Fields associated with the search index and their properties
index
readonlyindex:IndexInfo
Defined in: schema/schema.ts:147
Details of the basic index configurations
version
readonlyversion:"0.1.0"
Defined in: schema/schema.ts:151
Version of the underlying index schema