结合kibana一步一步学Elasticsearch 的增删改查

结合kibana一步一步学Elasticsearch 的增删改查

学习教程参考:https://www.cainiaojc.com/elasticsearch/elasticsearch-api-conventions.html

需要注意的是:
1.POST 用于新增,PUT用于更新最为合适;
2.PUT会将新的json值完全替换掉旧的,而POST方式只会更新相同字段的值,其他数据不会改变,新提交的字段若不存在则增加
3.PUT和DELETE操作是幂等的。所谓幂等是指不管进行多少次操作,结果都一样

  • POST index/type/xxx 创建
  • DELETE index/type/xxx 删除
  • PUT index/type/xxx 更新或创建
  • GET index/type/xxx 查看

其中:
POST不用加具体的id,它是作用在一个集合资源之上的(/uri),而PUT操作是作用在一个具体资源之上的(/uri/xxx),所以PUT操作必须要加ID
在ES中,如果不确定document的ID(documents具体含义见下),那么直接POST对应uri( “POST /website/blog” ),ES可以自己生成不会发生碰撞的UUID;

如果确定document的ID,比如 “PUT /website/blog/123”,那么执行创建或修改(修改时_version版本号提高1)

在幂等性的区别如下:

  • PUT、GET、DELETE是幂等的,由于同一条这样的指令,执行多次结果都一样。比如 PUT /uri/xxx 多次,那么结果和这条指令执行一次效果一样。
  • 而POST是非幂等的,执行多次更改多次服务器状态。比如POST /uri 多次,那么生成多个UUID的document,执行多次效果当然和执行一次不一样了。

1.创建索引,在关系数据库中的理解就是创建一个表:

PUT school

2.添加一条school的数据:POST或者是PUT都可以创建数据,其中_doc是type,1 是 _id
在这里插入图片描述

POST school/_doc/1
{
   "name":"Crescent School",
   "description":"State Board Affiliation",
   "street":"Tonk Road",
   "city":"Jaipur",
   "state":"RJ",
   "zip":"176114",
   "location":[26.8535922,75.7923988],
   "fees":2500,
   "tags":["Well equipped labs"],
   "rating":"4.5"
}

3.查询索引school的所有数据:

GET school/_search
{
  "query": {
     "match_all": {}
  }
}

4.查询指定Id的数据,其中_doc是type:

GET school/_doc/2

5.根据指定的字段查询数据,GET或者POST都可以,其中school是索引,可以多个索引同时查询,以逗号隔开:

GET /school/_search
{
  "query":{
    "query_string": {
      "default_field": "test",
      "query": "test"
    }
  }
}

6.使用通配符模糊匹配索引查询,因为有些索引的前缀相同,只有后缀不同,因此可以前缀匹配查询:

也可以不知道具体的字段,直接通过关键字匹配数据
POST /school*/_search
{
   "query":{
      "query_string":{
         "query":"CBSE"
      }
   }
}
  1. 查询所有以“ school”开头的索引,但不是来自school_gov并包含CBSE的索引
POST /school*,-schools_gov /_search
{
   "query":{
      "query_string":{
         "query":"CBSE"
      }
   }
}
  1. ignore_unavailable−如果index(es)URL中不存在一个或多个,则不会发生错误或将停止任何操作 例如,school索引存在,但book_shops不存在。
POST /school*,book_shops/_search
{
   "query":{
      "query_string":{
         "query":"CBSE"
      }
   }
}
以上查询则会报错索引book_shops不存在,从而无法显示索引school的查询数据,那么加上ignore_unavailable:
ignore_unavailable=true中的=前后不能有空格,错误写法:ignore_unavailable = true
POST /school*,book_shops/_search?ignore_unavailable=true
{
   "query":{
      "query_string":{
         "query":"CBSE"
      }
   }
}

9.删除文档,其中_doc是type,1 是 _id:

DELETE school/_doc/1

10.按指定字段,做一些聚合操作,具体需要根据实际情况去选择:

但同样也会列出明细数据
POST user/_search
{
   "aggs":{
      "distinct_name_count":{"cardinality":{"field":"age"}},
      "avg_age":{"avg":{"field":"age"}},
      "max_age" : { "max" : { "field" : "age" } },
      "min_age" : { "min" : { "field" : "age" } },
      "total_age" : { "sum" : { "field" : "age" } },
      "age_stats" : { "extended_stats" : { "field" : "age" } },
      "grades_stats" : { "stats" : { "field" : "age" } }
   }
}

11.Sql查询,可以返回对象,可以返回字符集

返回文本,注意:字段类型是数组的不能返回
POST /_sql?format=txt
{
  "query": """
    SELECT name,description,street,city,state,zip,rating FROM "school"
  """
}

返回对象
POST /_sql
{
  "query": """
    SELECT name,description,street,city,state,zip,rating FROM "school"
  """
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clarence.wei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值