通过curl或者http请求对elasticsearch中的数据进行增删改查

作者: admin 分类: ELK 发布时间: 2019-03-22 22:43  阅读: 312 views

最近学习elasticsearch的数据存储,整体语法还是比较规则的。可以使用浏览器、postman、命令行等进行操作。

elasticsearch官网的解释最官方,请查看下面的地址

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index.html

1. 查询当前集群状态

http://localhost:9200/_cat/health?v
epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1553060909 13:48:29  elasticsearch yellow          1         1      5   5    0    0        5             0                  -                 50.0%

//这里的status为yellow是由于这里搭建的elasticsearch环境为单节点的,并且建立的索引的eplica副本为1。

2.查询当前节点列表信息 v表示显示表头

http://localhost:9200/_cat/nodes?v
ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1           34          99  11    2.49                  mdi       *      quDOwq-

3.查询当前的索引列表

http://localhost:9200/_cat/indices?v

health status index   uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   project _WuFRJ6CQaaRgCtxEPMsiw   5   1          1            0      4.4kb          4.4kb

如果把rep的值改为1,索引的状态就会由yellow变为green

4.查询索引为project ,类型为test,id为1的数据,pretty表示格式化显示

http://localhost:9200/project/test/1?pretty

{
  "_index" : "project",
  "_type" : "test",
  "_id" : "1",
  "_version" : 1,
  "found" : true,
  "_source" : {
    "json" : "text"
  }
}

5.查询索引为postman ,类型为test,id为1的数据,pretty格式化,包含所有字段并排除name和set*开头的字段。

http://127.0.0.1:9200/postman/test/1?pretty&_source_includes=*&_source_excludes=name,set*

{
  "_index" : "postman",
  "_type" : "test",
  "_id" : "1",
  "_version" : 1,
  "found" : true,
  "_source" : { }
}

6.是否返回_source字段及值

http://127.0.0.1:9200/postman/test/1?_source=false
{"_index":"postman","_type":"test","_id":"1","_version":1,"found":true}

7. 查询所有索引信息

http://127.0.0.1:9200/_all/_search?pretty


elasticsearch的查询语法如下

curl -X<REST Verb> <Node>:<Port>/<Index>/<Type>/<ID>
  <REST Verb>:REST风格的语法谓词
  <Node>:节点ip
  <port>:节点端口号,默认9200
  <Index>:索引名
  <Type>:索引类型
  <ID>:操作对象的ID号
如果命令行操作不熟的话,可以用 postman也可以操作。

elasticsearch查询

可以看到上图的result为created。

再次执行http://localhost:9200/_cat/indices?v 可以看到列表中出现了新增的索引信息

health status index   uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   postman KL9VXel5RNO0lNLWOqeakA   5   1          1            0      4.4kb          4.4kb
yellow open   project _WuFRJ6CQaaRgCtxEPMsiw   5   1          1            0      4.4kb          4.4kb

1.curl命令行删除索引

curl -XDELETE ‘localhost:9200/postman?pretty’

{
  "acknowledged" : true
}
//表示删除成功
//下面表示删除postman索引下类型为test且id为2的数据
curl -XDELETE 'localhost:9200/postman/test/2?pretty

2. 覆盖es中索引的数据

curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
{
  "doc": { "name": "Jane Doe", "age": 20 }
}'

3.创建索引模板,通过匹配模板前缀设置相关索引的分片、副本。达到对应的优化目的。

这里是创建所有以test开头的索引模板,则之后创建的已test开头的索引将遵循这个模板。

【如不创建则按照默认配置执行,非单节点最优配置】

PUT /_template/test-* 
{
    "index_patterns":"test*",
    "order":0,
    "settings":{
        "number_of_shards":3,
        "number_of_replicas":0
    }
}

4. 对索引的信息进行字段映射的规则制定。相当于给数据中的counter、tags属性指明了类型和是否参与排序。

和数据库表的字段和数据类型相近。可以用来分组、排序、聚合查询等

//对创建的索引进行映射。
curl -X PUT "localhost:9200/twitter" -H 'Content-Type: application/json' -d'
 {
    "mappings": {
       "_doc": {
          "properties": {
             "counter": {
                "type": "integer",
                "store": false
             },
             "tags": {
                "type": "keyword",
                "store": true
             }
          }
       }
    }
 }
 '

5. 创建索引数据

//增加两条条测试数据
curl -X PUT "localhost:9200/twitter/_doc/1" -H 'Content-Type: application/json' -d'
 {
     "counter" : 1,
     "tags" : ["red"]
 }
 '
//本条数据,给索引文档增加了路由属性
curl -X PUT "localhost:9200/twitter/_doc/2?routing=user1" -H 'Content-Type: application/json' -d'
{
    "counter" : 1,
    "tags" : ["white"]
}
'

6.查询上面创建的索引数据

http://127.0.0.1:9200/twitter/_search?routing=user123

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "twitter",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 1.0,
        "_routing" : "user1",
        "_source" : {
          "counter" : 1,
          "tags" : [
            "white"
          ]
        }
      }
    ]
  }
}

7.查询字段满足条件的数据  q=tags:red     是查询tags属性中值为red的数据。多个可以用,

http://127.0.0.1:9200/twitter/_search?pretty&q=tags:red

{
  "took" : 7,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.2876821,
    "hits" : [
      {
        "_index" : "twitter",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 0.2876821,
        "_source" : {
          "counter" : 1,
          "tags" : [
            "red"
          ]
        }
      }
    ]
  }
}

8.上面查询的另一种实现方式如下:

//body中带有参数的查询方式
curl -X GET "localhost:9200/twitter/_search" -H 'Content-Type: application/json' -d'
{
    "query" : {
        "term" : { "tags" : "red" }
    }
}
'
//结果匹配到tags:red数据1条
{"took":4,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":1,"max_score":0.2876821,"hits":[{"_index":"twitter","_type":"_doc","_id":"1","_score":0.2876821,"_source":
{
    "counter" : 1,
    "tags" : ["red"]
}

 

关于elasticsearch的增删改查还有非常多的实现和方式。更多了解还是去参考头部的官网地址。官方还是比一些二道手的信息更全面和条理的,否则容易理解的比较片面。

也可以在kibana控制台的开发工具上进行测试、解析

使用kibana的开发工具console做一些elasticsearch的基本查询和设置


   原创文章,转载请标明本文链接: 通过curl或者http请求对elasticsearch中的数据进行增删改查

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

更多阅读