Skip to content
大纲

产品概述

开源Elasticsearch是一个基于Lucene的实时分布式的搜索与分析引擎,是遵从Apache开源条款的一款开源产品,是当前主流的企业级搜索引擎。作为一款基于RESTful API的分布式服务,Elasticsearch可以快速地、近乎于准实时地存储、查询和分析超大数据集,通常被用来作为构建复杂查询特性和需求强大应用的基础引擎或技术。 Flyme云Elasticsearch是基于开源Elasticsearch构建的全托管Elasticsearch云服务,在100%兼容开源功能的同时,支持开箱即用、按需付费。不仅提供云上开箱即用的Elasticsearch、Kibana在内的Elastic Stack生态组件,集成了安全、备份、告警、监控等高级特性,被广泛应用于实时日志分析处理、信息检索、以及数据的多维查询和统计分析等场景。

快速入门

如果您是初次使用Flyme云Elasticsearch,可参见产品使用系列文档,快速使用Elasticsearch、Kibana、高级监控报警功能和应用性能监控分析服务。同时您也可以参见数据迁移系列文档,将第三方Elasticsearch、云数据库和大数据云产品数据迁移至Flyme云Elasticsearch。

操作指南

📌 提示

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

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

前提条件

已注册Flyme云账号。 具体操作,请参见账号注册。

场景说明

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

json
{
  "products": [
    {
      "productName": "理财产品A",
      "annual_rate": "3.2200%",
      "describe": "180天定期理财,最低20000起投,收益稳定,可以自助选择消息推送"
    },
    {
      "productName": "理财产品B",
      "annual_rate": "3.1100%",
      "describe": "90天定投产品,最低10000起投,每天收益到账消息推送"
    },
    {
      "productName": "理财产品C",
      "annual_rate": "3.3500%",
      "describe": "270天定投产品,最低40000起投,每天收益立即到账消息推送"
    },
    {
      "productName": "理财产品D",
      "annual_rate": "3.1200%",
      "describe": "90天定投产品,最低12000起投,每天收益到账消息推送"
    },
    {
      "productName": "理财产品E",
      "annual_rate": "3.0100%",
      "describe": "30天定投产品推荐,最低8000起投,每天收益会消息推送"
    },
    {
      "productName": "理财产品F",
      "annual_rate": "2.7500%",
      "describe": "热门短期产品,3天短期,无须任何手续费用,最低500起投,通过短信提示获取收益消息"
    }
  ]
}

操作流程

1. 步骤一:创建实例

创建一个Flyme云Elasticsearch实例。

2. 步骤二:通过Kibana访问实例

等待实例状态正常后,通过Kibana访问FlymeElasticsearch实例。

3. 步骤三:创建索引

通过Restful API完成索引创建。

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

通过Restful API在文档中批量插入数据。

5. 步骤五:搜索数据

通过Restful API完成全文数据搜索和按查询条件搜索。

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

如果不再使用索引,可以通过命令删除对应索引,避免浪费资源。

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

如果不再需要实例,可以释放实例。实例释放后数据无法恢复,建议释放实例前先备份数据。

步骤一:创建实例

1. 前往实例创建页面

2. 在购买页面完成实例配置。

实例创建后,需要一段时间才能生效。时间长短与您的集群规格、数据结构和大小等相关,一般在小时级别。您可以在实例列表的状态列,查看实例状态。

参数说明
可用区根据业务情况选择地域,实例创建后地域不能更换:
  • 资源部署地域和用户的距离越近,网络时延越低,访问速度越快。
  • 资源部署地域和用户的距离越近,网络时延越低,访问速度越快。
Elasticsearch版本

7.10版本

新增开源特性:
  • 提高对存储字段的压缩能力,降低存储成本。
  • 通过 事件查询语言(EQL)增强Elasticsearch安全性。
  • search.max_buckets 的默认值由10000增加到65535。
  • 支持不区分大小写的查询。通过将可选参数 case_insensitive 设置为true,实现不区分大小写的查询。
更多变化,请参见 Breaking changes in 7.10
Release-notes:Elasticsearch Release-notes
多节点高可用类型该配置可以选择是简单规模部署还是复杂规模部署
  • 简单规模部署:主节点、热节点、温节点三者不分开,由同一Elasticsearch实例承担,Kibana节点部署在Elasticsearch Master节点中,小型测试业务可选择该类型部署。
  • 复杂规模部署:复杂规模部署包括热节点、温节点、主节点、Kibana节点等节点类型选择,大型业务可以选择此类型部署。
规格单击各节点区块,根据业务需要配置各节点。
💡 说明
  • 修改elastic账号的密码,在密码生效期间会影响服务访问,因此不建议在业务中直接使用elastic账号。如果程序中需要指定ES实例的账号和密码,建议在Kibana控制台创建具有相应权限的角色和用户。具体操作,请参见 规格容量评估
主备节点数按需选择
登录名默认账号为elastic,不可更改。elastic账号可以用来访问ES实例和登录Kibana控制台。
💡 说明
密码elastic账号对应的密码,不可为空。
配置费用说明
  • 目前计费仅支持包年包月,暂不支持按量付费
  • 快速访问与配置

    在使用Flyme云Elasticsearch实例完成相关业务前,您需要先访问该实例。同时您也可以配置实例,以提高查询效率和服务的安全性。本文介绍如何访问实例,以及Flyme云Elasticsearch支持的配置。

    访问实例

    您可以通过以下三种方式访问实例。

    访问方式适用场景相关文档
    Kibana控制台
    • 图形化操作与展示。
    • 监控实例。
    • 管理数据。
    可以通过管理控制台的Elasticsearch信息获取Kibana地址
    API通过API访问实例通过API访问Elasticsearch实例
    客户端通过在PHP、Python、Java或GO代码中配置Elasticsearch实例的公网(公网IP暂不支持)或私网IP访问实例。通过客户端访问Elasticsearch实例

    配置实例

    Flyme云Elasticsearch支持以下配置。

    配置详细配置说明相关文档
    集群配置
    • 配置YML文件
    Elasticsearch YML配置文档
    数据备份配置
    • 自动备份与恢复
    • 手动备份与恢复

    步骤二:通过Kibana访问实例

    等待实例状态变为正常,即可执行以下步骤。

    📌 提示

    您也可以通过curl命令和客户端方式访问实例。具体操作,请参见访问实例。

    在Elasticsearch实例列表中,单击目标实例ID。可以在主界面上面看到Kibana的地址,复制连接进入。 在登录页面输入账号和密码,单击登录。 账号为elastic,密码为您创建实例时设置的密码。如果忘记可重置密码,具体操作请参见重置实例访问密码。 在登录成功页面,单击自己浏览。 单击Kibana页面左上角的菜单栏按钮图标,选择Management 开发工具(Dev Tools)。 在Console页签下,执行如下命令访问Elasticsearch实例。 访问成功后,结果如下。

    json
    {
      "name": "es-cn-wuf3pxg630005****-data-h-0",
      "cluster_name": "es-cn-wuf3pxg63000****",
      "cluster_uuid": "1kaVmF46T2yOapAA6M****",
      "version": {
        "number": "8.9.1",
        "build_flavor": "default",
        "build_type": "docker",
        "build_hash": "652eb44fa71049c1fcdc08c967ef9f751d98****",
        "build_date": "2023-08-18T06:51:36.666651565Z",
        "build_snapshot": false,
        "lucene_version": "9.7.0",
        "minimum_wire_compatibility_version": "7.17.0",
        "minimum_index_compatibility_version": "7.0.0"
      },
      "tagline": "You Know, for Search"
    }

    步骤三:创建索引

    创建一个名称为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"
                }
            }
        }
    }

    📌 提示

    官方Elasticsearch 7.0及以上版本将移除映射中的type类型定义,之前版本会继续支持。如果在7.0及以上版本中使用了type,会出现"type": "mapper_parsing_exception"的错误提示。详细信息及解决方案,请参见 Removal of mapping types

    以上示例创建了一个名称为product_info的索引。索引的类型为products(7.0及以上版本为_doc),并包含了productName、annual_rate和describe字段。 创建成功后,返回结果如下。

    json
    {
      "acknowledged": true,
      "shards_acknowledged": true,
      "index": "product_info"
    }

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

    使用_bulk API,批量插入数据。

    POST /product_info/_doc/_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,说明数据插入成功。

    步骤五:搜索数据

    • 全文搜索 搜索描述内容包含每天收益到账消息推送的所有产品。
    GET /product_info/_doc/_search
    {
      "query": {
        "match": {
          "describe": "每天收益到账消息推送"
        }
      }
    }

    搜索成功后,返回结果如下。

    json
    {
      "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": "理财产品B",
              "annual_rate": "3.1100%",
              "describe": "90天定投产品,最低10000起投,每天收益到账消息推送"
            }
          },
          {
            "_index": "product_info",
            "_type": "products",
            "_id": "WrvWYXAB8Rql5AUxLqUU",
            "_score": 1.3968885,
            "_source": {
              "productName": "理财产品D",
              "annual_rate": "3.1200%",
              "describe": "90天定投产品,最低12000起投,每天收益到账消息推送"
            }
          },
          {
            "_index": "product_info",
            "_type": "products",
            "_id": "WbvWYXAB8Rql5AUxLqUU",
            "_score": 1.3547361,
            "_source": {
              "productName": "理财产品C",
              "annual_rate": "3.3500%",
              "describe": "270天定投产品,最低40000起投,每天收益立即到账消息推送"
            }
          },
          {
            "_index": "product_info",
            "_type": "products",
            "_id": "W7vWYXAB8Rql5AUxLqUU",
            "_score": 1.1507283,
            "_source": {
              "productName": "理财产品E",
              "annual_rate": "3.0100%",
              "describe": "30天定投产品推荐,最低8000起投,每天收益会消息推送"
            }
          },
          {
            "_index": "product_info",
            "_type": "products",
            "_id": "XLvWYXAB8Rql5AUxLqUU",
            "_score": 0.5753642,
            "_source": {
              "productName": "理财产品F",
              "annual_rate": "2.7500%",
              "describe": "热门短期产品,3天短期,无须任何手续费用,最低500起投,通过短信提示获取收益消息"
            }
          },
          {
            "_index": "product_info",
            "_type": "products",
            "_id": "V7vWYXAB8Rql5AUxLqUU",
            "_score": 0.31854028,
            "_source": {
              "productName": "理财产品A",
              "annual_rate": "3.2200%",
              "describe": "180天定期理财,最低20000起投,收益稳定,可以自助选择消息推送"
            }
          }
        ]
      }
    }
    • 按查询条件搜索 搜索年化率在3.0000%到3.1300%之间的产品。
    GET /product_info/_doc/_search
    {
      "query": {
        "range": {
          "annual_rate": {
            "gte": "3.0000%",
            "lte": "3.1300%"
          }
        }
      }
    }

    执行成功后,返回结果如下。

    json
    {
      "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": "理财产品B",
              "annual_rate": "3.1100%",
              "describe": "90天定投产品,最低10000起投,每天收益到账消息推送"
            }
          },
          {
            "_index": "product_info",
            "_type": "products",
            "_id": "WrvWYXAB8Rql5AUxLqUU",
            "_score": 1.0,
            "_source": {
              "productName": "理财产品D",
              "annual_rate": "3.1200%",
              "describe": "90天定投产品,最低12000起投,每天收益到账消息推送"
            }
          }
        ]
      }
    }

    📌 提示

    Elasticsearch会根据条件搜索到符合预期的产品,同时以升序排列展示。

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

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

    了解了Flyme云Elasticsearch的使用方法后,您可以执行如下命令,删除对应索引,避免浪费资源。

    警告

    索引删除后不可恢复,请谨慎操作。

    DELETE /product_info

    删除成功后,返回如下结果。

    json
    {
      "acknowledged": true
    }

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

    如果您不再需要实例,可以将其释放。释放后,实例停止计费,数据不可恢复。

    警告

    实例释放后数据无法恢复,建议您在释放之前先备份数据。具体操作,请参见数据备份概述。

    1. 在Elasticsearch实例列表中,选择目标实例操作列下的释放实例。
    2. 在弹出的对话框中,单击确认。

    Elasticsearch常见问题