部署全文索引¶
NebulaGraph 的全文索引是基于 Elasticsearch 实现,这意味着用户可以使用 Elasticsearch 全文查询语言来检索想要的内容。全文索引由内置的进程管理,当 listener 集群和 Elasticsearch 集群部署后,内置的进程只能为数据类型为定长字符串或变长字符串的属性创建全文索引。
注意事项¶
使用全文索引前,请确认已经了解全文索引的使用限制。
部署 Elasticsearch 集群¶
部署 Elasticsearch 集群请参见 Kubernetes 安装 Elasticsearch 或单机安装 Elasticsearch。
当 Elasticsearch 集群启动时,请添加 NebulaGraph 全文索引的模板文件,以下面的模板为例:
Note
以下模板对应 ES 7.8 版本。ES 的版本不同,索引模板可能也不同。打开 Elasticsearch 官方文档 查看对应 ES 版本使用的索引模板。
{
"template": "nebula*",
"settings": {
"index": {
"number_of_shards": 3,
"number_of_replicas": 1
}
},
"mappings": {
"properties" : {
"tag_id" : { "type" : "long" },
"column_id" : { "type" : "text" },
"value" :{ "type" : "keyword"}
}
}
}
请确保指定的以下字段严格符合上述模板格式:
"template": "nebula*"
"tag_id" : { "type" : "long" },
"column_id" : { "type" : "text" },
"value" :{ "type" : "keyword"}
Caution
创建全文索引时,索引名称需要以nebula
开头。
示例命令:
curl -H "Content-Type: application/json; charset=utf-8" -XPUT http://127.0.0.1:9200/_template/nebula_index_template -d '
{
"template": "nebula*",
"settings": {
"index": {
"number_of_shards": 3,
"number_of_replicas": 1
}
},
"mappings": {
"properties" : {
"tag_id" : { "type" : "long" },
"column_id" : { "type" : "text" },
"value" :{ "type" : "keyword"}
}
}
}'
用户可以配置 Elasticsearch 来满足业务需求,如果需要定制 Elasticsearch,请参见 Elasticsearch 官方文档。
登录文本搜索客户端¶
部署 Elasticsearch 集群之后,可以使用SIGN IN
语句登录 Elasticsearch 客户端。必须使用 Elasticsearch 配置文件中的 IP 地址和端口才能正常连接,同时登录多个客户端,请在多个elastic_ip:port
之间用英文逗号(,)分隔。
语法¶
SIGN IN TEXT SERVICE (<elastic_ip:port>, {HTTP | HTTPS} [,"<username>", "<password>"]) [, (<elastic_ip:port>, ...)];
示例¶
nebula> SIGN IN TEXT SERVICE (127.0.0.1:9200, HTTP);
Note
Elasticsearch 默认没有用户名和密码,如果设置了用户名和密码,请在SIGN IN
语句中指定。
显示文本搜索客户端¶
SHOW TEXT SEARCH CLIENTS
语句可以列出文本搜索客户端。
语法¶
SHOW TEXT SEARCH CLIENTS;
示例¶
nebula> SHOW TEXT SEARCH CLIENTS;
+-------------+------+
| Host | Port |
+-------------+------+
| "127.0.0.1" | 9200 |
+-------------+------+
退出文本搜索客户端¶
SIGN OUT TEXT SERVICE
语句可以退出所有文本搜索客户端。
语法¶
SIGN OUT TEXT SERVICE;
示例¶
nebula> SIGN OUT TEXT SERVICE;