本教程指引您快速创建一个阿里云Elasticsearch实例,并访问该实例,使用Restful API,完成创建索引、创建文档并插入数据、搜索数据、删除索引等操作。

前提条件

场景说明

某金融服务企业通过线上平台管理理财项目,之前使用传统数据库为客户提供理财产品的搜索功能。由于收益信用良好,得到了不少客户的青睐,但随之而来的是业务体系逐步扩大,客户信息也逐步增加,使得传统型数据库的缺陷越来越明显。为了改善搜索响应迟缓、精准性无法保障、数据服务设备性能降低等状况,该企业引入了阿里云Elasticsearch产品,为用户提供理财产品的搜索功能。阿里云Elasticsearch有效地解决了之前传统数据库存在的问题,同时提升了客户满意度。本文以此场景为例,为您介绍如何使用阿里云Elasticsearch搭建集群和搜索数据。

本场景假设该企业的理财产品信息如下所示。
{
"products":[
{"productName":"大健康天天理财","annual_rate":"3.2200%","describe":"180天定期理财,最低20000起投,收益稳定,可以自助选择消息推送"}
{"productName":"西部通宝","annual_rate":"3.1100%","describe":"90天定投产品,最低10000起投,每天收益到账消息推送"}
{"productName":"安详畜牧产业","annual_rate":"3.3500%","describe":"270天定投产品,最低40000起投,每天收益立即到账消息推送"}
{"productName":"5G设备采购月月盈","annual_rate":"3.1200%","describe":"90天定投产品,最低12000起投,每天收益到账消息推送"}
{"productName":"新能源动力理财","annual rate":"3.0100%","describe":"30天定投产品推荐,最低8000起投,每天收益会消息推送"}
{"productName":"微贷赚","annual_rate":"2.7500%","describe":"热门短期产品,3天短期,无须任何手续费用,最低500起投,通过短信提示获取收益消息"}
]
}

步骤一:创建实例

  1. 前往实例创建页面
  2. 在购买页面的前四个配置页面,完成实例启动配置。
    本教程使用的配置如下,未提及的配置保持默认。更多配置信息,请参见购买页面参数(商业版)
    配置页面 配置项 示例 说明
    基础配置 付费模式 按量付费 在前期程序研发或功能测试期间,建议购买按量付费类型的实例测试。
    说明 购买包年包月类型的实例可以享受优惠条件。
    选择服务 通用商业版,6.7 阿里云Elasticsearch通用商业版包含全部X-pack高级特性,致力于数据分析和数据搜索等场景服务。
    集群配置 地域和可用区
    • 国家:中国
    • 地域:华东1(杭州)
    • 可用区:杭州可用区I
    阿里云Elasticsearch支持的地域和可用区,请参见地域和可用区
    注意 所选可用区下必须存在专有网络和虚拟交换机。
    可用区数量 单可用区
    • 单可用区:普通部署模式,适用于非关键任务型工作(默认)。
    • 两个可用区:跨可用区容灾部署模式,适用于生产型工作。
    • 三个可用区:高可用部署模式,推荐用于具有更高可用性要求的生产工作负载。
    实例规格 数据节点:
    • 规格族:云盘型,1:2计算型
    • 规格:elasticsearch.sn1ne.large,2核4GB
    • 数据节点数量:5
    本案例仅修改数据节点的配置。专有主节点可提高服务稳定性,建议在生产环境时购买。由于本案例仅供测试,因此可不购买专有主节点。
    注意
    • 1核2GB规格只适合测试,不适用于生产环境,不在SLA售后保障范围内。
    • 如果您的业务有弹性扩缩容的需求,可购买弹性节点。详细信息,请参见弹性扩缩集群资源
    网络及系统配置 网络类型 专有网络 默认为专有网络,不可更改。
    专有网络 tf-testAcccn-hangzhou3274 / vpc-bp16k1dvzxtmagcva**** 选择对应区域下的专有网络。
    虚拟交换机 tf-testAcccn-hangzhou3274 / vsw-bp1k4ec6s7sjdbudw**** 只能显示所选专有网络中,与实例在相同可用区下的虚拟交换机。
    登录名 elastic 默认为elastic,不可更改。
    登录密码 自定义密码 请记录该配置,在登录Kibana控制台时,需要输入该密码。
    场景初始化配置 通用场景 选择后,对应模板的配置会自动应用到集群中。
  3. 单击下一步:确认订单,然后预览实例配置。
    说明 配置不符合预期时,可单击修改实例配置图标修改。
    本教程的实例配置预览如下图。实例配置预览
  4. 勾选服务协议,单击立即购买
  5. 提示开通成功后,单击管理控制台,进入阿里云Elasticsearch的控制台概览页面。
  6. 在左侧导航栏,单击Elasticsearch实例
  7. 在顶部菜单栏,选择资源和地域,然后在实例列表中查看创建成功的阿里云Elasticsearch实例。

步骤二:访问实例

等待实例状态变为正常,即可执行以下步骤,通过Kibana访问实例。
说明 您也可以通过curl命令和客户端方式访问实例。具体操作,请参见访问实例
  1. 实例列表中,单击目标实例ID。
  2. 在左侧导航栏,单击可视化控制
  3. Kibana区域中,单击进入控制台
  4. 在登录页面输入账号和密码,单击登录。
    账号为elastic,密码为您创建实例时设置的密码。如果忘记可重置,重置密码的具体操作和注意事项,请参见重置实例访问密码
  5. 在登录成功页面,单击Explore on my own
    登录成功页面
  6. 在左侧导航栏,单击Dev Tools(开发工具),再单击Go to work
  7. Console中,执行如下命令访问Elasticsearch实例。
    GET /
    console页面
    访问成功后,结果如下。
    {
      "name" : "tgeAvZe",
      "cluster_name" : "es-cn-nif1z64qj003g****",
      "cluster_uuid" : "IZmmd9IGTmKzqiZiyz****",
      "version" : {
        "number" : "6.7.0",
        "build_flavor" : "default",
        "build_type" : "tar",
        "build_hash" : "c9c0c3a",
        "build_date" : "2020-12-01T08:00:27.556078Z",
        "build_snapshot" : false,
        "lucene_version" : "7.7.0",
        "minimum_wire_compatibility_version" : "5.6.0",
        "minimum_index_compatibility_version" : "5.0.0"
      },
      "tagline" : "You Know, for Search"
    }
                            

步骤三:创建索引

创建一个名称为product_info的索引:
  • 7.0以下版本
    PUT /product_info
    {
      "settings": {
        "number_of_shards": 5,
        "number_of_replicas": 1
      },
      "mappings": {
        "products": {
          "properties": {
            "productName": {
           "type": "text",
           "analyzer": "ik_smart"
          },
            "annual_rate":{
           "type":"keyword"
          },
            "describe": {
          "type": "text",
          "analyzer": "ik_smart"
        }
          }
        }
      }
    }
  • 7.0及以上版本
    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"
            }
        }
      }
    }
    注意 官方Elasticsearch 7.0及以上版本将移除映射中的type类型定义,之前版本会继续支持。如果在7.0及以上版本中使用了type,会出现"type": "mapper_parsing_exception"的错误提示。详细信息及解决方案,请参见Removal of mapping types

以上示例创建了一个名称为product_info的索引。索引的类型为products(7.0及以上版本为_doc),并包含了productNameannual_ratedescribe字段。

创建成功后,返回结果如下。
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "product_info"
}

步骤四:创建文档并插入数据

使用_bulk API,批量插入数据。
注意 以下命令仅适用于Elasticsearch 7.0以下版本,7.0及以上版本需要将products修改为_doc
POST /product_info/products/_bulk
{"index":{}}
{"productName":"大健康天天理财","annual_rate":"3.2200%","describe":"180天定期理财,最低20000起投,收益稳定,可以自助选择消息推送"}
{"index":{}}
{"productName":"西部通宝","annual_rate":"3.1100%","describe":"90天定投产品,最低10000起投,每天收益到账消息推送"}
{"index":{}}
{"productName":"安详畜牧产业","annual_rate":"3.3500%","describe":"270天定投产品,最低40000起投,每天收益立即到账消息推送"}
{"index":{}}
{"productName":"5G设备采购月月盈","annual_rate":"3.1200%","describe":"90天定投产品,最低12000起投,每天收益到账消息推送"}
{"index":{}}
{"productName":"新能源动力理财","annual rate":"3.0100%","describe":"30天定投产品推荐,最低8000起投,每天收益会消息推送"}
{"index":{}}
{"productName":"微贷赚","annual_rate":"2.7500%","describe":"热门短期产品,3天短期,无须任何手续费用,最低500起投,通过短信提示获取收益消息"}
如果返回显示"errors" : false,说明数据插入成功。插入成功截图

步骤五:搜索数据

注意 以下命令仅适用于Elasticsearch 7.0以下版本,7.0及以上版本需要将products修改为_doc
  • 全文搜索

    搜索描述内容包含每天收益到账消息推送的所有产品。

    GET /product_info/products/_search
    {
      "query": {
        "match": {
          "describe": "每天收益到账消息推送"
        }
      }
    }
    搜索成功后,返回结果如下。
    {
      "took" : 21,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : 6,
        "max_score" : 1.3968885,
        "hits" : [
          {
            "_index" : "product_info",
            "_type" : "products",
            "_id" : "WLvWYXAB8Rql5AUxLqUU",
            "_score" : 1.3968885,
            "_source" : {
              "productName" : "西部通宝",
              "annual_rate" : "3.1100%",
              "describe" : "90天定投产品,最低10000起投,每天收益到账消息推送"
            }
          },
          {
            "_index" : "product_info",
            "_type" : "products",
            "_id" : "WrvWYXAB8Rql5AUxLqUU",
            "_score" : 1.3968885,
            "_source" : {
              "productName" : "5G设备采购月月盈",
              "annual_rate" : "3.1200%",
              "describe" : "90天定投产品,最低12000起投,每天收益到账消息推送"
            }
          },
          {
            "_index" : "product_info",
            "_type" : "products",
            "_id" : "WbvWYXAB8Rql5AUxLqUU",
            "_score" : 1.3547361,
            "_source" : {
              "productName" : "安详畜牧产业",
              "annual_rate" : "3.3500%",
              "describe" : "270天定投产品,最低40000起投,每天收益立即到账消息推送"
            }
          },
          {
            "_index" : "product_info",
            "_type" : "products",
            "_id" : "W7vWYXAB8Rql5AUxLqUU",
            "_score" : 1.1507283,
            "_source" : {
              "productName" : "新能源动力理财",
              "annual rate" : "3.0100%",
              "describe" : "30天定投产品推荐,最低8000起投,每天收益会消息推送"
            }
          },
          {
            "_index" : "product_info",
            "_type" : "products",
            "_id" : "XLvWYXAB8Rql5AUxLqUU",
            "_score" : 0.5753642,
            "_source" : {
              "productName" : "微贷赚",
              "annual_rate" : "2.7500%",
              "describe" : "热门短期产品,3天短期,无须任何手续费用,最低500起投,通过短信提示获取收益消息"
            }
          },
          {
            "_index" : "product_info",
            "_type" : "products",
            "_id" : "V7vWYXAB8Rql5AUxLqUU",
            "_score" : 0.31854028,
            "_source" : {
              "productName" : "大健康天天理财",
              "annual_rate" : "3.2200%",
              "describe" : "180天定期理财,最低20000起投,收益稳定,可以自助选择消息推送"
            }
          }
        ]
      }
    }
    说明 阿里云Elasticsearch支持通过分词器搜索数据,同时也支持评分排序。在上文的返回结果中,前两条商品信息中都出现了每天收益到账消息推送,后两条商品信息中只出现了关键词消息推送,所以越靠前的搜索结果的匹配度越高,分数也越高。
  • 按查询条件搜索
    搜索年化率在3.0000%到3.1300%之间的产品。
    GET /product_info/products/_search
    {
      "query": {
        "range": {
          "annual_rate": {
            "gte": "3.0000%",
            "lte": "3.1300%"
          }
        }
      }
    }
    执行成功后,返回结果如下。
    {
      "took" : 10,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : 2,
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "product_info",
            "_type" : "products",
            "_id" : "WLvWYXAB8Rql5AUxLqUU",
            "_score" : 1.0,
            "_source" : {
              "productName" : "西部通宝",
              "annual_rate" : "3.1100%",
              "describe" : "90天定投产品,最低10000起投,每天收益到账消息推送"
            }
          },
          {
            "_index" : "product_info",
            "_type" : "products",
            "_id" : "WrvWYXAB8Rql5AUxLqUU",
            "_score" : 1.0,
            "_source" : {
              "productName" : "5G设备采购月月盈",
              "annual_rate" : "3.1200%",
              "describe" : "90天定投产品,最低12000起投,每天收益到账消息推送"
            }
          }
        ]
      }
    }
    说明 Elasticsearch会根据条件搜索到符合预期的产品,同时以降序排列展示。

    更多搜索方式,请参见Query DSL

步骤六:删除索引(可选)

了解了阿里云Elasticsearch的使用方法后,您可以执行如下命令,删除对应索引,避免浪费资源。
警告 索引删除后不可恢复,请谨慎操作。
DELETE /product_info
删除成功后,返回如下结果。
{
  "acknowledged" : true
}

步骤七:释放实例(可选)

如果您不再需要实例,可以将其释放。释放后,实例停止计费,数据不可恢复。释放操作只适用于按量付费实例。
警告 实例释放后数据无法恢复,建议您在释放之前先备份数据。具体操作,请参见数据备份概述
  1. 实例列表中,单击操作列下的更多 > 释放实例
    释放实例
  2. 在弹出的对话框中,单击确认。

后续步骤