使用Jredisearch创建索引时如何添加前缀
JRedisearch 2.0.0 创建索引配置前缀的实现方法
你可以通过自定义构造IndexOptions实例实现前缀配置,无需修改核心创建索引逻辑,具体实现方式如下:
- 确保已导入对应的
IndexOptions类,该类的Builder模式原生支持前缀配置参数 - 按原有逻辑构造索引Schema,定义字段类型与权重
- 通过
IndexOptions.builder()构造自定义配置,调用prefixes方法传入需要匹配的key前缀数组 - 将构造完成的
IndexOptions实例传入createIndex方法的第二个参数即可
完整代码示例:
import io.redisearch.Client; import io.redisearch.Schema; import io.redisearch.client.Client.IndexOptions; public class CreateIndexWithPrefix { public static void main(String[] args) { // 初始化RediSearch客户端,参数依次为索引名、Redis地址、Redis端口 Client client = new Client("MyIndex", "localhost", 6379); // 如果Redis有密码,使用如下构造方法: // Client client = new Client("MyIndex", "localhost", 6379, 10000, "your_password"); // 构建Schema,对应命令中的SCHEMA部分 Schema schema = new Schema() .addTextField("name", 1.0); // 自定义索引配置,设置前缀 IndexOptions options = IndexOptions.builder() // 传入前缀数组,对应命令中的PREFIX 1 doc: .prefixes(new String[]{"doc:"}) // 默认索引基于HASH类型,如果是JSON类型可添加如下配置 // .on(IndexOptions.DataType.JSON) .build(); // 创建索引 client.createIndex(schema, options); } }
配置说明
prefixes方法接收字符串数组参数,支持配置多个前缀,例如需要匹配doc:和order:两个前缀时,可写为.prefixes(new String[]{"doc:", "order:"}),底层会自动计算前缀数量生成对应命令参数- 上述代码生成的底层命令和你给出的原生
FT.CREATE MyIndex ON HASH PREFIX 1 doc: SCHEMA name TEXT完全一致
验证配置是否生效
索引创建完成后,可在Redis-cli执行FT.INFO MyIndex命令,查看返回结果中index_definition项下的prefixes值,确认前缀配置是否符合预期。
内容的提问来源于stack exchange,提问作者chaitra d
相关产品推荐
相关产品推荐

