本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文以“某金融服务企业使用阿里云Elasticsearch(简称ES)为用户提供理财产品的搜索功能”场景为例,为您介绍如何使用阿里云ES搭建集群并完成索引创建、数据搜索等操作。
操作须知
数据说明:示例该企业的理财产品信息如下。
版本说明:阿里云ES支持多个版本,不同版本的功能存在差异。本文以
8.17
版本进行案例演示。费用说明:本文示例创建按量付费实例,会根据实际的资源使用量收取相应费用。完成本文案例,预计花费不超过
20
元。Kibana:是灵活的数据分析及可视化工具,在Kibana中,您可搜索及查看ES索引中的数据,并进行交互。
Restful API:可通过HTTP协议与ES集群进行交互。本文的索引创建、数据插入及搜索、索引删除等相关操作均使用Restful API实现。
前提条件
已创建专有网络VPC和虚拟交换机vSwitch。您可通过VPC和vSwitch保障ES实例的网络安全、与其他资源互通、实现高可用。
创建ES实例时需选择合适的VPC和vSwitch。VPC、vSwitch需要与ES实例同地域、同可用区,并且实例创建成功后不可更改。
本文示例VPC及vSwitch的核心参数配置如下。
类别 | 配置示例 |
VPC |
|
vSwitch | 可用区:杭州可用区I。 |
操作流程
使用阿里云ES搭建集群并完成数据搜索的相关操作流程如下。
创建实例:阿里云ES实例是一个托管式的ES服务,提供了一个易于使用、可扩展且稳定的搜索引擎平台。我们所要执行的数据存储、搜索与分析等所有操作均需在实例中完成。
访问实例:通过Kibana访问实例,后续会基于Kibana完成实例的索引创建、文档创建、数据插入及搜索等操作。
创建索引:用于后续存储本文示例的理财产品信息,并定义该信息中各个字段的搜索类型及分词方式。
说明索引是ES用于存储相关文档的逻辑容器,可帮助您组织和管理数据,显著提升查询效率。
创建文档并插入数据:将本文示例的理财产品信息以文档形式插入至上一步创建的索引中,以便后续查询。
搜索数据:可通过全文搜索、按条件搜索等方式查询所需产品。
(可选)后续步骤:可按需执行测试索引删除、数据迁移、集群扩容或实例释放等操作。
步骤一:创建实例
进入实例创建页面。
配置实例信息。
按如下表格配置实例信息。
说明未提及的参数保持默认配置。更多创建实例的参数介绍,请参见创建阿里云Elasticsearch实例。
参数
描述
商品类型
选择按量付费。
地域和可用区
选择华东1(杭州)的可用区I。
可用区数量
选择单可用区。
专有网络及虚拟交换机
选择您在前提条件中创建的VPC及vSwitch。
实例类型及版本
选择向量增强版的
8.17.0
版本。实例名称
配置为ES_test。
登录名及登录密码
登录名默认为elastic,且不可更改;登录密码自定义。
单击立即购买,按照界面指引完成支付。支付完成后,实例开始创建。
说明创建过程预计耗时
20
分钟左右,请耐心等待。查看实例状态。
在顶部菜单栏选择华东1(杭州)地域,单击左侧导航栏的Elasticsearch实例,即可在实例列表中查看所创建实例的状态。
当实例状态显示正常,表示实例创建成功,您可继续执行下述步骤。
步骤二:访问实例
进入可视化控制。
在Elasticsearch实例列表单击目标实例ID。
在左侧导航栏单击
。
配置Kibana白名单。
本文示例通过公网访问Kibana。为避免访问受限,需将您客户端的IP地址加入Kibana的公网访问白名单。
说明更多访问Kibana的网络配置及常见问题,请参见配置Kibana公网或私网。
在Kibana区域,单击修改配置。
单击Kibana公网访问白名单后的修改,按照界面指引,将您客户端的IP地址加入白名单。
进入Kibana开发工具。
通过Kibana的开发工具可访问ES实例,完成实例的索引创建、文档创建、数据插入及搜索等操作。
返回可视化控制页面,单击Kibana区域的公网入口。
输入用户名及密码,单击登录。
说明用户名为elastic,密码为您在步骤一中自定义的密码。
在欢迎页单击自己浏览。
在左上角单击
图标,选择Management > 开发工具,进入开发工具控制台。
测试访问结果。
在控制台页签执行
GET /
命令,访问ES实例。出现如下结果,表示访问成功。
步骤三:创建索引
创建索引product_info
,并配置对productName
、describe
字段进行全文搜索及粗粒度分词,对annual_rate
字段进行精确匹配,示例代码如下。
PUT /product_info
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"productName": {
"type": "text",
"analyzer": "ik_smart"
},
"annual_rate":{
"type":"keyword"
},
"describe": {
"type": "text",
"analyzer": "ik_smart"
}
}
}
}
返回如下结果,表示索引创建成功。
步骤四:创建文档并插入数据
使用_bulk
API,批量向product_info
索引插入多条文档,每条文档的内容为理财产品信息的相关数据(包含理财产品的名称、年化利率、描述字段)。示例代码如下。
{"index":{}}
表示插入一条新文档,ES会自动为该文档生成一个唯一ID。
POST /product_info/_bulk
{"index":{}}
{"productName":"理财产品A","annual_rate":"3.2200%","describe":"180天定期理财,最低20000起投,收益稳定,可以自助选择消息推送"}
{"index":{}}
{"productName":"理财产品B","annual_rate":"3.1100%","describe":"90天定投产品,最低10000起投,每天收益到账消息推送"}
{"index":{}}
{"productName":"理财产品C","annual_rate":"3.3500%","describe":"270天定投产品,最低40000起投,每天收益立即到账消息推送"}
{"index":{}}
{"productName":"理财产品D","annual_rate":"3.1200%","describe":"90天定投产品,最低12000起投,每天收益到账消息推送"}
{"index":{}}
{"productName":"理财产品E","annual_rate":"3.0100%","describe":"30天定投产品推荐,最低8000起投,每天收益会消息推送"}
{"index":{}}
{"productName":"理财产品F","annual_rate":"2.7500%","describe":"热门短期产品,3天短期,无须任何手续费用,最低500起投,通过短信提示获取收益消息"}
返回结果中包含"errors": false
,表示数据插入成功。
步骤五:搜索数据
场景一:全文搜索
示例使用match
查询,对describe
字段执行关键字匹配,搜索product_info
索引中描述内容包含每天收益到账消息推送
的所有产品,代码如下。
GET /product_info/_search
{
"query": {
"match": {
"describe": "每天收益到账消息推送"
}
}
}
场景二:按条件搜索
示例使用range
查询,在 product_info
索引中搜索年化率在3.0000%
~3.1300%
之间的产品,代码如下。
GET /product_info/_search
{
"query": {
"range": {
"annual_rate": {
"gte": "3.0000%",
"lte": "3.1300%"
}
}
}
}
(可选)后续步骤
删除索引
执行如下代码,删除本文创建的测试索引。
DELETE /product_info
返回结果如下。
迁移数据及扩容集群
释放实例
若ES实例后续无需使用,请及时释放,避免浪费资源并产生额外费用。
实例释放后,数据无法恢复,请谨慎操作,建议释放实例前先备份数据。实例释放后将停止计费。