初级版:从实例创建到数据检索

本教程指导初次接触阿里云Elasticsearch(ES)的开发者,在约45分钟(含约20分钟的实例创建等待时间)内完成从实例创建到数据检索的完整学习流程。

学习内容

  • 创建并配置一个ES实例

  • 通过Kibana的开发工具(Dev Tools)进行数据建模。

    KibanaES的核心组件之一,能够让用户通过直观的图形化方式探索、分析和展示存储在 ES 中的数据。为方便用户使用,Kibana已内置在ES控制台,无需手动安装。

  • 插入样本数据并执行多种检索操作。

完成本教程后,可掌握ES最基础的索引创建、数据读写和搜索能力。

ES版本与成本说明

正式操作前,需了解以下测试过程中涉及的关键信息:

  • ES类型和版本:向量增强版 8.17.0。

    该版本将 AI 搜索链路中的核心算法服务组件化,包含文档解析、切片、文本向量化、查询分析、召回、排序以及 LLM 模型,支持语义搜索,助力企业快速构建 RAG 和多模态搜索能力。

  • 成本预估:本教程全程采用按量付费模式。若严格按照推荐规格和时长操作,预计总花费在20元以内。测试完成后,请立即释放实例,以避免产生不必要的费用。

前提条件

  • 注册并登录阿里云账号:确保账号拥有创建和管理Elasticsearch、VPC等资源的权限。

  • 创建专有网络VPC和虚拟交换机vSwitch,记录VPCvSwitch所在的地域可用区。后续创建ES实例时必须选择相同的地域和可用区,否则无法关联。

操作步骤

步骤一:创建集群(约20分钟)

  1. 进入实例创建页面创建实例,关键参数配置如下,其他参数默认即可。

    参数

    说明

    付费类型

    按量付费,可随时释放。

    地域与可用区

    • 地域:选择已创建的VPCvSwitch所在地域。

    • 可用区:测试需求下,为减少实例创建等待时间,选择单可用区。应用生产环境时,可升级为多可用区。

    本示例为华东1(杭州)/ 可用区I。

    网络

    选择已创建的VPCvSwitch。

    ES类型和版本

    向量增强版8.17.0,本教程基于此版本。

    数据节点规格

    • CPU类型:Intel 24G。

    • 数据节点存储类型及数量:SSD云盘、单节点存储空间20GiB。

    • 数据节点数量:2。

    数据节点是存储索引数据的节点,主要对文档进行增删改查、聚合等操作。

    Kibana节点

    24G

    实例名称

    ES_test

    密码

    自定义,后续用于登录Kibana进行索引构建与数据探索。

  2. 单击立即购买,等待约20分钟直至实例状态变为正常即可进入下一步操作。

步骤二:配置并登录Kibana

Kibana公网访问地址默认开启,出于安全考虑,公网访问默认禁止所有IP,需要将待访问设备的IP地址加入白名单才能访问。

访问鉴权采用双重验证:首先需登录您的阿里云账号,然后使用 ES 实例的访问信息(用户名固定为 elastic 及其对应密码)进行二次登录验证。

  1. 在左侧导航栏单击可视化控制,在Kibana区域进入修改配置

    image

  2. 访问配置页面,修改Kibana公网访问白名单。

    image

    获取待访问设备IP

    您可以参照以下场景,获取待访问设备的IP地址。

    场景

    需获取的IP地址

    获取方式

    在本地设备中通过公网地址访问Kibana。

    本地设备公网IP。

    说明

    如果您的本地设备处在家庭网络或公司局域网中,需要添加局域网的公网出口IP地址。

    通过curl ipinfo.io/ip查询本地设备公网IP。

    ECS实例中通过公网地址访问Kibana。

    ECSES在不同专有网络中时,可通过ECS公网地址访问Kibana,此时需获取ECS的公网IP并添加到ES公网白名单中。

    登录ECS控制台,在实例列表查看实例的公网IP地址。

    添加公网白名单

    获取待访问设备IP并将其添加至公网白名单中。

    1. 单击default分组右侧的配置 ,在弹出的对话框中添加IP白名单。

      配置类别

      格式和示例值

      重要注意事项

      IPv4地址格式

      • 单个IP:192.168.0.1

      • 网段:192.168.0.0/24,建议将零散的IP合并为IP

      单个集群最多可配置300IP或者IP网段,多个IP或者IP网段之间用英文逗号隔开,且逗号前后不能有空格。

      • 公网默认地址:127.0.0.1,表示禁止所有IPv4地址访问。

      • 0.0.0.0/0:允许所有IPv4访问。

        重要
        • 强烈建议不要配置 0.0.0.0/0,存在高危风险。

        • 部分集群和地域不支持 0.0.0.0/0,请以界面或者报错提示为准。

      IPv6地址格式

      (仅杭州地域支持)

      • 单个IP:2401:XXXX:1000:24::5

      • 网段:2401:XXXX:1000::/48

      单个集群最多可配置300IP或者IP网段,多个IP或者IP网段之间用英文逗号隔开,且逗号前后不能有空格。

      • ::1:禁止所有IPv6地址访问

      • ::/0:允许所有IPv6访问

        重要
        • 强烈建议不要配置 ::/0,存在高危风险。

        • 部分集群版本不支持 ::/0,请以控制台界面或者报错提示为准。

    2. 配置完成后,单击确认

      image

  3. 单击公网入口,在Kibana登录页面,输入用户名和密码,成功登录即可进入Kibana控制台进行ES数据探索。

    image

    • 用户名:固定为elastic。

    • 密码:创建ES集群时设置的密码,如遗忘可重置密码

  4. 进入开发工具控制台,执行GET /查询集群信息。

    image

    结果验证:右侧窗口返回包含版本号、集群名称等信息的JSON对象,则表示连接正常。

    image

步骤三:创建索引

Kibana的开发工具中执行Restful API为理财产品数据创建索引(Mapping)product_info

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"
        }
    }
  }
}

核心参数说明:

settings:定义索引分片配置,如定义5个主分片,每个主分片1个副本。
mappings:定义索引字段。如定义索引文件中有productNameannual_ratedescribe3个字段。text类型字段支持分词和模糊搜索,keyword类型字段用于精确值匹配,更多字段类型请参见Field data types

结果验证:返回结果含"acknowledged": true"shards_acknowledged": true表示索引创建成功。

步骤四:插入数据

执行以下代码批量插入测试数据:

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表示数据插入成功。

步骤五:检索数据

全文检索(模糊匹配)

查询describe包含“每天收益到账”的理财产品:

GET /product_info/_search
{
  "query": {
    "match": {
      "describe": "每天收益到账消息推送"
    }
  }
}

结果验证:返回结果按相关性评分排序,评分越高的结果越靠前。

按条件检索(精确匹配)

查询annual_rate(年化利率)在3.00%~3.13%之间的理财产品:

GET /product_info/_search
{
  "query": {
    "range": {
      "annual_rate": {
        "gte": "3.0000%",
        "lte": "3.1300%"
      }
    }
  }
}

结果验证:精确匹配数值范围,返回符合条件的结果,更多查询条件的使用请参见QueryDSL

清理资源与后续学习

删除数据并释放ES实例

  1. 执行如下代码,删除本文创建的测试索引。

    DELETE /product_info

    返回结果如下:image

  2. 返回Elasticsearch控制台的实例列表。

  3. 在实例列表待释放实例右侧的操作列中,单击更多 > 释放实例,选择无需等待,立即清除,单击确认释放实例。

    重要

    释放实例会永久删除该实例及其包含的所有数据,此操作不可逆,需谨慎操作。

    image

后续学习路径

如需深入学习ES,可从以下方向探索: