暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PolarSearch使用指南

快点好起来 2025-03-19
297

PolarSearch是PolarDB提供的一种分布式搜索服务,支持全文精确搜索以及向量近似搜索等多模计算场景,其架构基于ElasticSearch(7.10.2)并与PolarDB数据库紧密集成。PolarSearch可以让您通过简单操作就能实现复杂的数据检索需求。本指南旨在帮助您快速了解如何设置和使用PolarSearch来增强应用程序的功能。

重要

本文PolarSearch使用指南需要您对ElasticSearch或OpenSearch有一定了解。更多信息,请参见OpenSearch Documentation

前提条件

说明

由于PolarSearch目前处于灰度阶段,如您有该功能需求请加入官方钉钉群进行咨询,获取更多技术支持。钉钉群号:28655007499。

集群配置要求

  • 产品版本:企业版。
  • 数据库引擎:MySQL 8.0.1、MySQL 8.0.2。

说明

以上数据库引擎版本要求均无小版本要求。更多信息,请参见查询版本号

  • 系列:集群版。
  • Serverless集群不支持PolarSearch。更多信息,请参见Serverless

开启PolarSearch功能

  1. 登录PolarDB控制台,选择集群所在地域,在集群列表中找到目标集群。
  2. 单击目标集群ID,进入集群基本信息页。
  3. 数据库节点区域,单击增删节点

image

4. 在增删节点向导对话框,选择新增搜索节点。

image

创建账号

创建搜索节点管理员账号

说明

  • 添加的账号是数据库的普通权限账号。
  • 添加的普通权限账号为PolarSearch功能的管理员权限账号。
  1. 登录PolarDB控制台,选择集群所在地域,在集群列表中找到目标集群。
  2. 单击目标集群ID,进入集群基本信息页。
  3. 数据库节点区域,将鼠标悬浮在搜索节点,单击设置连接数据库账号

image

4. 在对话框中可以选择已有的数据库普通账号或创建新普通账号,并输入账号密码。

image

创建普通账号

普通账户可以按照索引维度控制账号能访问的索引范围。

  • 搜索节点可通过API实现完整的访问控制,请参见社区文档OpenSearch API

登录实例

ECS实例登录PolarSearch集群

  1. 添加ECS私网网段到PolarDB MySQL集群白名单。具体操作,请参见设置集群白名单
  2. ECS连接PolarSearch集群。

执行如下命令,如果返回集群信息,说明集群可服务:

curl https://<endpoint>:<port>/ -ku <user_name>:<passwd>

说明

其中<endpoint>:<port>替换搜索地址中的私网地址即可。

image

其中<user_name>:<passwd>为之前步骤创建的PolarSearch管理员账号。

浏览器登录PolarSearch控制台

  1. 添加开发机公网网段到PolarDB MySQL集群白名单。具体操作,请参见设置集群白名单
  2. 浏览器登录PolarSearch控制台。
  3. 在浏览器地址栏输入https://dashboard-:后回车。

说明

其中<endpoint>:<port>替换为搜索地址中的Dashboard地址即可。

image

在弹出登录框,输入搜索节点管理员账号和密码(数据库普通权限账号),即可登录Kibana兼容的PolarSearch控制台。

操作示例

说明

  • 本例全部在ECS实例中通过命令行完成。
  • PolarSearch完全兼容OpenSearch 2.18.0和Elasticsearch 7.10.2版本的SDK或REST API,其他版本可能存在兼容性问题。更多信息,请参见OpenSearch

创建索引

搜索节点中的索引,相当于关系型数据库中的表,可使用Elasticsearch兼容的REST API创建,示例如下:

curl -X PUT "https://<endpoint>:<port>/articles" -H "Content-Type:application/json" -d '
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"title": {
"type": "text" // 全文搜索字段(注释字段,测试请删除)
},
"content": {
"type": "text"
},
"author": {
"type": "keyword" // 精确匹配字段(注释字段,测试请删除)
}}}}'

导入数据

curl -X POST "https://<endpoint>:<port>/articles/_bulk" -H "Content-Type:application/json" -d '
{"index": {}}
{"title": "Introduction to PolarSearch", "content": "PolarSearch is a powerful search engine.", "author": "Allen"}
{"index": {}}
{"title": "Advanced Search Techniques", "content": "Learn how to use full-text search and filters in PolarDB.", "author": "Lang"}
{"index": {}}
{"title": "Elasticsearch vs PolarSearch", "content": "A comparison of Elasticsearch and PolarSearch features.", "author": "Zhao"}'

执行搜索查询

数据导入完成后,可通过SDK或者REST API进行全文搜索,如下所示:

curl -X GET "https://<endpoint>:<port>/articles/_search" -H "Content-Type:application/json" -d '
{
"query": {
"match": {
"content": "PolarSearch"
}}}'

说明

更多搜索查询语法,请参见OpenSearch

创建向量索引

curl -X PUT "https://<endpoint>:<port>/my-vector-index" -H "Content-Type:application/json" -d '
{
"settings": {
"index": {
"knn": true
}
},
"mappings": {
"properties": {
"vector_field": {
"type": "knn_vector",
"dimension": 4
},
"metadata": {
"type": "text"
}}}}'

插入向量数据

curl -X POST "https://<endpoint>:<port>/my-vector-index/_bulk" -H "Content-Type:application/json" -d '
{"index": {}}
{"vector_field": [0.1, 0.5, -0.3, 0.8], "metadata": "Document 1"}
{"index": {}}
{"vector_field": [-0.2, 0.7, 0.4, -0.1], "metadata": "Document 2"}'

向量检索

curl -X GET "https://<endpoint>:<port>/my-vector-index/_search" -H "Content-Type:application/json" -d '
{
"size": 2,
"query": {
"knn": {
"vector_field": {
"vector": [0.1, 0.5, -0.3, 0.8],
"k": 2
}}}}'

最后修改时间:2025-03-19 15:35:39
文章转载自快点好起来,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论