Kibana操作ES 全覆盖 基础查询 DSL查询

Kibana

概念

Kibana是什么

  • Kibana是一个针对Elasticsearch mysql开源分析及可视化平台,使用Kibana可以`查询、查看并与存储在ES索引的数据进行交互操作

指令操作

索引操作

  • 查看全部索引
GET /_cat/indices
  • 查看全部索引及参数说明
GET /_cat/indices?v
//返回结果说明
health status   index  uuid pri rep docs.count docs.deleted 
健康状态  索引状态  索引   id  主分片 副本分片 文档数  删除         
store.size   pri.store.size
存储大小      主分片存储大小
  • 创建索引
//  创建索引 
PUT /索引名
  • 创建索引自定义分片
PUT /索引名
{
  "settings": {
    "number_of_shards": 1,  # 主分片数量
    "number_of_replicas": 0  # 副本分片数量
  }
}
  • 创建索引及映射
ES数据类型说明
//字符串类型         数字类型         小数类型            布尔类型   日期类型
keyword  text    integer long      float double       boolean    date

//创建索引及其映射
// 创建索引及映射  注:student为索引名  id、name、age、desc 为字段名
PUT /student
{
  "settings": {
    "number_of_shards": 1, 
    "number_of_replicas": 0
  },
  "mappings": {
    "properties": {
       "id":{
         "type": "integer"
       },
       "name":{
         "type":"keyword"
       },
       "age":{
         "type": "double"
       },
       "desc":{
         "type": "text"
       }
    }
  } 
}
  • 查看索引及映射详细信息
GET /products/_mapping
  • 删除索引
//  删除索引
DELETE /索引名

文档操作

  • 查询文档
 GET /student/_doc/1  (1为文档id)
  • 查询该索引全部文档
GET /student/_doc/_search/
{
  "query":{
    "match_all":{}
  }
}
  • 添加文档
  //        此处  1为文档id、查询用到的就是这个id 不是下面那个id字段
POST /student/_doc/1
{
  "id":1,
  "name":"小明",
  "age":"19",
  "desc":"小明是学渣"
}
  • 删除文档
DELETE /student/_doc/1 
  • 更新文档
//更新文档 不保留原字段  
PUT /student/_doc/1
{
  "name":"ipone"
}

//更新文档 保留原字段
POST /products/_doc/1/_update
{
"doc":{
	"name":"明明"
	}
}
  • 批量添加
//注:json格式必须是这样 不然会报错
POST /student/_doc/_bulk
{"index":{"_id":3}}
{"id":3,"name":"小李","age":"22","desc":"小李是混混"}
{"index":{"_id":"4"}}
{"id":4,"name":"陈陈","age":"33","desc":"陈陈是老师"}

  • 批量修改
POST /student/_doc/_bulk
{"update":{"_id":"2"}}
{"doc":{"name":"芳芳"}}
{"update":{"_id":"3"}}
{"doc":{"name":"李李"}}
  • 批量删除
POST /student/_doc/_bulk
{"delete":{"_id":"5"}}
{"delete":{"_id":"6"}}

高级查询 Query DSL

DSL简介

Query DSL 利用Rest API传递JSON格式的请求体(Request Body)数据与ES进行交互
说白了 这个DSL就是复杂查询 包含一些分页查询、关键字查询、排序查询等操作

命令操作

  • term(关键词查询)
    此处需要主要注意分词 因为ES存储的过程是将一段信息按照指定的分词规则进行存储,例如使用的是ik分词器,存储的信息为:“我们吃饭” ,ik分词器会将该信息分割为两个关键字 “我们” “吃饭” 进行存储,那么想根据该字段搜索文档时,需要传入的是"我们" 或者"吃饭",如果传入"我" 或者 “们” 都是搜索不到该信息的
    注:如果没有指定分词器 ES默认使用的中文按字分词,也就是会将 “我们吃饭” 分割为 我、们、吃、饭 进行存储。
// 上文介绍到 ES的字符串类型分别为 keyword  text ,keyword是不会进行分词存储的,也就是只有字段类型是text的时候,
//才会出现上述情况。keyword必须用全部信息进行检索。

// desc字段是text类型,会进行分词, ES默认中文分词是按字分词 ,故文档中只要包含是这个字的都会返回
GET /student/_search
{
  "query": {
    "term": {
      "desc": {
        "value": "是"
      }
    }
  }
}

// name 是keyword类型,故不会进行分词 必须使用全部信息检索。
GET /student/_search
{
  "query": {
    "term": {
      "name": {
        "value": "小明"
      }
    }
  }
}


  • range(范围查询)
// 参数说明   gt   gte    lt   lte
//          大于 大于等于 小于 小于等于
GET /student/_search
{
  "query": {
    "range":{
      "age":{
        "gt":"19"
      }
    }
  }
}
  • prefix(前缀查询)
//该行为与分词无关

GET /student/_search
{
  "query": {
    "prefix": {
      "name": {
        "value": "小"
      }
    }
  }
}
  • wildcard(通配符)
// 参数说明    ?          *
//         匹配一个    匹配多个
GET /student/_search
{
  "query":{
    "wildcard": {
      "name": {
        "value": "小?"
      }
    }
  }
}
  • ids(多id查询)
GET /student/_search
{
  "query": {
    "ids": {
      "values": ["1","2"]
    }
  }
}
  • bool(多条件查询)
//bool关键字 用来组合多个条件实现复杂查询
//must:相当于&&
//should:相当于||
//must_not:相当于!不能满足任何一个

GET /student/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "ids":{
            "values":[1,2,3,4]
          }
        },{
          "term":{
            "desc":{
              "value": "小"
            }
          }
        }
      ]
    }
  }
}


  • 多字段查询(multi_match)
//字段分词则按分词检索。

GET /student/_search
{
  "query": {
    "multi_match": {
      "query": "小",
      "fields": ["desc","name"]
    }
  }
}


  • 返回指定条数(size)
// 默认10条

GET /student/_doc/_search/
{
  "query":{
    "match_all":{}
  }"size":5
}

  • 分页(form)
//返回指定起始返回位置,和size实现分页
GET /student/_doc/_search/
{
  "query":{
    "match_all":{}
  }"size":5,
  "from":0
}

  • 指定字段排序(sort)
// 参数说明 desc 降序  asc 升序

GET /student/_search
{
  "query":{
      "match_all":{}
  },
  "sort":[
    {
        "age":{
        "order":"asc"
        }
    }
  ]
}

  • 只查询指定字段(source)

GET /student/_doc/_search/
{
  "query":{
    "match_all":{}
  },
  "_source":["id","desc"]
}


springBoot 集成ES

待续

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值