tencent cloud

文档反馈

通过 API 访问集群

最后更新时间:2021-05-18 16:02:49

    Elasticsearch 提供了功能全面的 RESTful API 与集群交互,详情请参见 Elasticsearch 官方的 API 文档

    腾讯云 ES 构建在用户 VPC 内,用户可以通过位于同一 VPC 下的 CVM 作为客户端访问 ES 集群。可通过内网访问外网访问两种方式访问 ES 集群,外网访问存在安全风险,需谨慎开启。

    说明:

    • 外网访问仅用于开发调试,因系统会限制调用频次,所以不能用于生产环境。
    • 当前 ES 公网访问不计费,带宽10M。

    查看内外网访问地址

    集群列表页,单击【集群 ID】进入详情页:

    • 对于内网地址,在基础配置中可直接查看。
    • 对于外网地址,出于安全考虑默认是关闭的。对于已开启 ES 集群用户登录认证 的集群,支持开启公网地址。开启公网访问可能会为集群引入安全风险,同时也将允许通过 API 直接访问、操作甚至删除在 ElasticSearch 集群中的数据,请谨慎开启。

    基本配置

    测试访问

    可通过 curl 的方式测试访问集群,不支持通过 ping 的方式测试连通性。

    测试服务是否可访问

    说明:

    对于已开启 ES 集群用户登录认证 的集群,登录时需要用户名和密码认证,具体规则为curl action -u user:password host ...,需要将 user、password 替换为自己实际的用户名和密码,将 host 替换为自己的 IP。

    下面将以内网地址访问来演示各访问操作。

    输入命令:

    curl -XGET http://10.0.17.2:9200
    若开启了ES集群用户登录认证,请注意输入用户名密码
    curl -XGET -u user:password http://10.0.17.2:9200

    返回如下,表示集群访问正常,具体参数的值会根据集群的版本有所不同:

    {
     "name": "15589826570000*****",
     "cluster_name": "es-******",
     "cluster_uuid": "NGIm1M_zRw-L3o_gH****",
     "version": {
       "number": "6.4.3",
       "build_flavor": "default",
       "build_type": "zip",
       "build_hash": "fe40335",
       "build_date": "2019-05-17T14:22:47.286024Z",
       "build_snapshot": false,
       "lucene_version": "7.4.0",
       "minimum_wire_compatibility_version": "5.6.0",
       "minimum_index_compatibility_version": "5.0.0"
     },
     "tagline": "You Know, for Search"
    }

    创建文档

    创建单个文档

    • 若集群未开启用户登录认证, 输入命令行:
      curl -XPUT http://10.0.0.2:9200/china/city/beijing -H 'Content-Type: application/json' -d'
      {
      "name":"北京市",
      "province":"北京市",
      "lat":39.9031324643,
      "lon":116.4010433787,
      "x":6763,
      "level.range":4,
      "level.level":1,
      "level.name":"一线城市",
      "y":6381,
      "cityNo":1
      }
      '
    • 若集群已开启用户登录认证,需要将下文中的 user、password 替换为自己集群实际的用户名和密码。 输入命令行:
      curl -XPUT -u user:password http://10.0.0.2:9200/china/city/beijing -H 'Content-Type: application/json' -d'
      {
      "name":"北京市",
      "province":"北京市",
      "lat":39.9031324643,
      "lon":116.4010433787,
      "x":6763,
      "level.range":4,
      "level.level":1,
      "level.name":"一线城市",
      "y":6381,
      "cityNo":1
      }
      '
      响应如下:
      {
       "_index":"china",
       "_type":"city",
       "_id":"beijing",
       "_version":1,
       "result":"created",
       "_shards":{
           "total":2,
           "successful":1,
           "failed":0
       },
       "created":true
      }

    创建多个文档

    输入命令行:

    curl -XPOST http://10.0.0.2:9200/_bulk -H 'Content-Type: application/json' -d'
    { "index" : { "_index": "china", "_type" : "city", "_id" : "beijing" } }
    {"name":"北京市","province":"北京市","lat":39.9031324643,"lon":116.4010433787,"x":6763,"level.range":4,"level.level":1,"level.name":"一线城市","y":6381,"cityNo":1}
    { "index" : { "_index": "china", "_type" : "city", "_id" : "shanghai" } }
    {"name":"上海市","province":"上海市","lat":31.2319526784,"lon":121.469443249,"x":7779,"level.range":4,"level.level":1,"level.name":"一线城市","y":4409,"cityNo":2}
    { "index" : { "_index": "china", "_type" : "city", "_id" : "guangzhou" } }
    {"name":"广州市","province":"广东省越秀区吉祥路79","lat":23.1317146641,"lon":113.2595185241,"x":6173,"level.range":4,"level.level":1,"level.name":"一线城市","y":2560,"cityNo":3}
    { "index" : { "_index": "china", "_type" : "city", "_id" : "shenzhen" } }
    {"name":"深圳市","province":"广东省福田区新园路37","lat":22.5455465546,"lon":114.0527779134,"x":6336,"level.range":4,"level.level":1,"level.name":"一线城市","y":2429,"cityNo":4}
    { "index" : { "_index": "china", "_type" : "city", "_id" : "chengdu" } }
    {"name":"成都市","province":"四川省锦江区红星路4段-88号-附1","lat":30.6522796787,"lon":104.0725574128,"x":4387,"level.level":2,"level.range":19,"level.name":"新一线城市","y":4304,"cityNo":5}
    { "index" : { "_index": "china", "_type" : "city", "_id" : "hangzhou" } }
    {"name":"杭州市","province":"浙江省拱墅区环城北路316","lat":30.2753694112,"lon":120.1509063337,"x":7530,"level.level":2,"level.range":19,"level.name":"新一线城市","y":4182,"cityNo":6}
    '

    响应如下:

    "took":9,"errors":false,"items":[{"index":{"_index":"china","_type":"city","_id":"beijing","_version":4,"result":"updated","_shards":{"total":2,"successful":2,"failed":0},"created":false,"status":200}},{"index":{"_index":"china","_type":"city","_id":"shanghai","_version":2,"result":"updated","_shards":{"total":2,"successful":2,"failed":0},"created":false,"status":200}},{"index":{"_index":"china","_type":"city","_id":"guangzhou","_version":1,"result":"created","_shards":{"total":2,"successful":2,"failed":0},"created":true,"status":201}},{"index":{"_index":"china","_type":"city","_id":"shenzhen","_version":1,"result":"created","_shards":{"total":2,"successful":2,"failed":0},"created":true,"status":201}},{"index":{"_index":"china","_type":"city","_id":"chengdu","_version":2,"result":"updated","_shards":{"total":2,"successful":2,"failed":0},"created":false,"status":200}},{"index":{"_index":"china","_type":"city","_id":"hangzhou","_version":2,"result":"updated","_shards":{"total":2,"successful":2,"failed":0},"created":false,"status":200}}]

    更新文档

    重复上文创建单个文档的输入代码,即可更新指定 ID beijing的文档。 响应如下:

    {"_index":"china","_type":"city","_id":"beijing","_version":2,"result":"updated","_shards":{"total":2,"successful":2,"failed":0},"created":false}

    查询文档

    查询指定 ID

    输入命令行:

    curl -XGET 'http://10.0.0.2:9200/china/city/beijing?pretty' -H 'Content-Type: application/json' 

    响应如下:

    {
     "_index" : "china",
     "_type" : "city",
     "_id" : "beijing",
     "_version" : 4,
     "found" : true,
     "_source" : {
       "name" : "北京市",
       "province" : "北京市",
       "lat" : 39.9031324643,
       "lon" : 116.4010433787,
       "x" : 6763,
       "level.range" : 4,
       "level.level" : 1,
       "level.name" : "一线城市",
       "y" : 6381,
       "cityNo" : 1
     }
    }

    查询某个索引

    输入命令行:

    curl -XGET 'http://10.0.0.2:9200/china/city/_search?pretty' -H 'Content-Type: application/json' 

    响应如下:

    {
     "took" : 0,
     "timed_out" : false,
     "_shards" : {
       "total" : 5,
       "successful" : 5,
       "skipped" : 0,
       "failed" : 0
     },
     "hits" : {
       "total" : 6,
       "max_score" : 1.0,
       "hits" : [
         {
           "_index" : "china",
           "_type" : "city",
           "_id" : "guangzhou",
           "_score" : 1.0,
           "_source" : {
             "name" : "广州市",
             "province" : "广东省越秀区吉祥路79",
             "lat" : 23.1317146641,
             "lon" : 113.2595185241,
             "x" : 6173,
             "level.range" : 4,
             "level.level" : 1,
             "level.name" : "一线城市",
             "y" : 2560,
             "cityNo" : 3
           }
         }]
       },
       ......
    }   

    复杂查询

    模拟 SQL:

    select * from city where level.level=2
    curl -XGET http://10.0.0.2:9200/china/city/_search?pretty -H 'Content-Type: application/json' -d'
    {
       "query" : {
           "constant_score" : { 
               "filter" : {
                   "term" : { 
                       "level.level" : 2
                   }
               }
           }
       }
    }'

    响应如下:

    {
     "took" : 2,
     "timed_out" : false,
     "_shards" : {
       "total" : 5,
       "successful" : 5,
       "skipped" : 0,
       "failed" : 0
     },
     "hits" : {
       "total" : 2,
       "max_score" : 1.0,
       "hits" : [
         {
           "_index" : "china",
           "_type" : "city",
           "_id" : "chengdu",
           "_score" : 1.0,
           "_source" : {
             "name" : "成都市",
             "province" : "四川省锦江区红星路4段-88号-附1号",
             "lat" : 30.6522796787,
             "lon" : 104.0725574128,
             "x" : 4387,
             "level.level" : 2,
             "level.range" : 19,
             "level.name" : "新一线城市",
             "y" : 4304,
             "cityNo" : 5
           }
         },
         {
           "_index" : "china",
           "_type" : "city",
           "_id" : "hangzhou",
           "_score" : 1.0,
           "_source" : {
             "name" : "杭州市",
             "province" : "浙江省拱墅区环城北路316号",
             "lat" : 30.2753694112,
             "lon" : 120.1509063337,
             "x" : 7530,
             "level.level" : 2,
             "level.range" : 19,
             "level.name" : "新一线城市",
             "y" : 4182,
             "cityNo" : 6
           }
         }
       ]
     }
    }

    聚合查询

    模拟 SQL:

    select level.level, count(1) from city group by level.level
    curl -XGET http://10.0.0.2:9200/china/city/_search?pretty -H 'Content-Type: application/json' -d'
    {
       "size" : 0,
       "aggs" : { 
           "city_level" : { 
               "terms" : { 
                 "field" : "level.level"
               }
           }
       }
    }'

    响应如下:

    {
     "took" : 10,
     "timed_out" : false,
     "_shards" : {
       "total" : 5,
       "successful" : 5,
       "skipped" : 0,
       "failed" : 0
     },
     "hits" : {
       "total" : 7,
       "max_score" : 0.0,
       "hits" : [ ]
     },
     "aggregations" : {
       "city_level" : {
         "doc_count_error_upper_bound" : 0,
         "sum_other_doc_count" : 0,
         "buckets" : [
           {
             "key" : 1,
             "doc_count" : 4
           },
           {
             "key" : 2,
             "doc_count" : 3
           }
         ]
       }
     }
    }

    删除文档

    删除单个文档

    输入命令行:

    curl -XDELETE 'http://10.0.0.2:9200/china/city/beijing?pretty' -H 'Content-Type: application/json' 

    响应如下:

    {
     "found" : true,
     "_index" : "china",
     "_type" : "city",
     "_id" : "beijing",
     "_version" : 5,
     "result" : "deleted",
     "_shards" : {
       "total" : 2,
       "successful" : 2,
       "failed" : 0
     }
    }

    删除类型

    curl -XDELETE 'http://10.0.0.2:9200/china/city?pretty' -H 'Content-Type: application/json' 

    删除索引

    curl -XDELETE 'http://10.0.0.2:9200/china?pretty' -H 'Content-Type: application/json' 
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持