Elasticsearch中Kibana操作语句基本使用

一、基本操作

1. 查看elasticsearch中一些基本信息

GET _cat/nodes 查看所有节点
GET _cat/health 查看es健康状态
Get _cat/master 查看主节点
GET _cat/indices 查看所有索引
GET /pms/_mapping 查看pms中各个数据的字段类型
// 查看分词情况 格式为GET /${index}/${type}/${id}/_termvectors?fields=${fields_name}
GET pms/product/26/_termvectors?fields=name 

2. post操作

修改加不加 _update 的区别

    1)带_update的时候会比较doc里面的值 和已存在的值是否一样 如果不一样执行修改操作 如果一样 不进行任何操作。重复执行更新操作,数据不会更新。

     2)不带_update,重复执行更新操作,数据也能更新成功。

应用场景:

     对于大并发更新,不带update。

     对于大并发查询少更新,带update,对比更新,重新计算分配规则。

// 在mall索引user类型下保存id为1的数据xxx,id可以不指定,
// 不指定的话会生成一个随机的id
POST /mall/user/1
{
    "name":"lisi",
    "age":18
}

// 修改操作,对于加不加_update都可以
POST /mall/user/1/_update
{
    "doc":{
        "name":"zhangsan",
        "age":18
    }
}
POST /mall/user/1/
{
    "doc":{
        "name":"lisi",
        "age":18
    }
}

3. put操作

        mall索引user类型下保存或者修改id为1的数据xxx ,id必须制定id已存在 执行修改操作 id不存在则新增 ,常用于修改操作。

PUT /mall/user/3 { "name":"wl", "age":18 }

4. get操作

GET mall/user/1
// 查询所有数据
GET pms/_search
{
  "query": {
    "match_all": {}
  }
}

5. delete操作

DELETE mall/user/1 #根据id删除
DELETE mall #删除整个索引

二、Query DSL

       elasticsearch提供了一个可以执行查询的Json风格的DSL,这个被称为Query DSL,查询语句非常全面。

1. 基本语法格式

match_all 查询类型:意思是查询所有的所有,

from,size 分页查询,

sort排序 可组合多字段

_source 指定查询结果字段 可支持多个

// 再mall中通过年龄倒序查询5条name和age字段数据
GET mall/_search
{
    "query": {
        "match_all": {}
    },
    "from": 0,
    "size": 5,
    "sort": {
        "age": {
            "order": "desc"
        }
    },
    "_source": ["name","age"]
}

2. 查询语句使用

      1)match 匹配查询 --- 基本类型 精确匹配

文本类型 会将查询条件进行分词, 全文检索:最终会按照评分进行排序 会对检索条件进行分词匹配。

GET /mall/_search
{
    "query":{
        "match": {
            "age": "18"
        }
    }
}

2)match_phrase 短句匹配 --- 不会对查询条件进行分词检索

查询name 包含 "hin lq"的结果

GET /mall/_search
{
    "query":{
        "match_phrase": {
            "name": "hin wlq"
        }
    }
}

3)keyworkd 精确匹配 --- 匹配的条件就是要显示字段的全部值,要进行精确匹配的。

GET /mall/_search
{
    "query":{
        "match_phrase": {
            "name.keyword": "hin lq"
        }
    }
}

4)multi_math 多字段匹配 --- 查询name和address 匹配的结果,类似于mysql中的or的效果

// name或者address字段中有包含hin的数据
GET /mall/_search
{
  "query":{
    "multi_match": {
      "query": "hin",
      "fields": ["name","address"]
    }
  }
}

5)bool 用来做符合查询

复合语句可以合并,任何其他查询语句,包括符合语句。这也就意味着,复合语句之间 可以互相嵌套,可以表达非常复杂的逻辑。

must:必须达到must所列举的所有条件

must_not:必须不匹配must_not所列举的所有条件。

should:应该满足should所列举的条件。 类似or

应该达到should列举的条件,如果到达会增加相关文档的评分,并不会改变查询的结果。如果query中只有should且只有一种匹配规则,那么should的条件就会被作为默认匹配条件而去改变查询结果。

GET /mall/_search
{
    "query":{
        "bool": {
          "should": [
            {
              "match": {
                "name": "hin"
              }
            },
            {
              "match": {
                "age": "18"
              }
            }
          ]
        }
    }
}

6)filter 结果过滤,不计算相关得分 --- 并不是所有的查询都要产生分数,特别是那些仅用于filering的文档。为了不计算分数,elasticsearch会自动查询场景别切优化查询结果。

// 先查询name匹配hin的结果 再从结果中获取 age>10 并且 age < 20
//  gte(大于等于),lte(小于等于),也可以结合使用gt(大于),lt(小于)
GET /mall/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "hin"
          }
        }
      ],
      "filter": {
        "range": {
          "age": {
            "gte": 10,
            "lte": 20
          }
        }
      }
    }
  }
}

7.Aggregation 聚合查询 --- 聚合提供了数据分组和提取数据的能力,类似于mysql中的group by ,avg,max等聚合函数。(不懂是不是版本的问题,以下代码执行报错)。

GET /testaggs/_search
{
  "query": {
    "match": {
      "address": "sz"
    }
  },
  "aggs": {
    "ageAvg": {
      "avg": {
        "field": "age"
      }
    }
  },
  "size": 0
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值