关于 SequoiaDB
快速入门
安装
基本操作
数据模型
SQL引擎
S3引擎
系统架构
数据库管理
连接器
驱动
参考手册
故障排除
SAC 管控中心
Web服务
版本信息
创建全文索引
创建全文索引使用现有的语法结构,增加全文索引类型 "text",在索引的 key 定义中指定。索引的其它选项对全文索引无效,因此无需指定。以下语句在集合 foo.bar 的 name 及 address 字段上创建复合全文索引:
> db.foo.bar.createIndex('idx', {name:"text", address:"text"})
可指定一个或多个字段,需要注意的是在创建时 text 类型不可与其它任何类型混用。每创建一个全文索引,会在数据节点上对应地创建一个固定集合空间及固定集合(集合与集合空间同名,以 SYS_ 开头,与全文索引的对应关系可通过直连数据节点并使用 listIndexes() 进行查询)。文档在 Elasticsearch 中进行索引时,会使用原始集合中文档的 _id 字段的值生成 Elasticsearch 中文档的 _id,支持的原始文档的 _id 类型包括:
全文索引在使用时存在以下约束:
删除全文索引
删除全文索引使用 dropIndex 语法,指定索引名即可。
> db.foo.bar.dropIndex('idx')
在索引被删除时,其对应的固定集合空间也会一并删除。
全文检索
SequoiaDB 适配的全文检索引擎为 Elasticsearch,通过在 SequoiaDB 的查询语法中包含 Elasticsearch 的搜索条件来进行全文检索。基本语法结构为:
> db.foo.bar.find( { "" : { $Text : <search command> } } )
其中的 search command 即 Elasticsearch 的搜索条件。search command 部分支持 Elasticsearch 的 DSL(Domain Specific Language 特定领域语言)语句。因此,需要使用全文检索功能的用户,需要掌握 Elasticsearch 的 DSL 语言。 以下示例程序在集合中查找 name 中包含 "Smith" 的所有记录:
> db.createCS('megacorp').createCL('employee') localhost:11810.megacorp.employee Takes 1.246399s. > db.megacorp.employee.createIndex('idx_1', {first_name:"text", "last_name":"text", "age":"text", "about":"text", "interests": "text"}) Takes 1.182447s. > db.megacorp.employee.insert({"first_name" : "John","last_name" : "Smith","age" : 25,"about" : "I love to go rock climbing","interests": [ "sports", "music" ]}) Takes 0.009290s. > db.megacorp.employee.insert({"first_name" : "Jane","last_name" : "Smith","age" : 32,"about" : "I like to collect rock albums","interests": [ "music" ]}) Takes 0.001013s. > db.megacorp.employee.insert({"first_name" : "Douglas","last_name" : "Fir","age" : 35,"about": "I like to build cabinets","interests": [ "forestry" ]}) Takes 0.001004s. > db.megacorp.employee.find({"":{"$Text":{"query":{"match":{"about" : "rock climbing"}}}}}) { "_id": { "$oid": "5a8f8d9c89000a0906000000" }, "first_name": "John", "last_name": "Smith", "age": 25, "about": "I love to go rock climbing", "interests": [ "sports", "music" ] } { "_id": { "$oid": "5a8f8d9f89000a0906000001" }, "first_name": "Jane", "last_name": "Smith", "age": 32, "about": "I like to collect rock albums", "interests": [ "music" ] } Return 2 row(s). Takes 1.181983s.