Kibana Dev Tools语法总结

使用Dev Tools操作es首先确保正确安装Kibana并和es配置成功,可参考我另一篇文章Windows安装Kibana

Dev Tools工具

我的是汉化了的,如果是英文版的在相应位置就好像就叫 Dev Tools
在这里插入图片描述

查看es信息

GET /
在这里插入图片描述

新增数据

自动生成id

格式:POST /test/_doc/ { }
test:自己的index,如果是新建就随意定义
{ }:json字符串,也是根据自己想存什么数据就存什么数据
如:

 POST /test/_doc/
{
  "name":"名字",
  "password":"密码",
  "age": 22,
  "sex":"男",
  "address":"地址xxx",
  "tel":"电话"
}

在这里插入图片描述

手动生成id

POST /test/_doc/1
{
  "name":"名字1",
  "password":"密码1",
  "age": 23,
  "sex":"女",
  "address":"四川",
  "tel":"132xxx"
}

在这里插入图片描述

批量新增

POST _bulk
{"index" : {"_index" : "test"}}
{"name" : "批量新增1","password" : "批量新增1","age" : 3,"sex" : "男","address" : "地址xxx","tel" : "电话"}
{"index" : {"_index" : "test"}}
{"name" : "批量新增1","password" : "批量新增1","age" : 23,"sex" : "男","address" : "地址xxx","tel" : "电话"}

插入的数据不能使用刚才创建数据时的那种多行形式,只能使用没有回车的一条数据,否则会报错
在这里插入图片描述
也可以指定id

POST _bulk
POST _bulk
{"index" : {"_index" : "test","_id" : 2}}
{"name" : "批量新增2","password" : "批量新增1","age" : 3,"sex" : "男","address" : "地址xxx","tel" : "电话"}
{"index" : {"_index" : "test","_id" : 3}}
{"name" : "批量新增3","password" : "批量新增1","age" : 23,"sex" : "男","address" : "地址xxx","tel" : "电话"}

查询数据

所有数据

_search是固定的

GET /test/_search

在这里插入图片描述

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

根据id

GET /test/_doc/1

_doc 是固定的
1 是id
在这里插入图片描述
在这里插入图片描述

条件查询

所有查询条件如果是字符串形式,如果无法匹配,就需要在查询属性后面加
.keyword

单条件查询

password 等于密码

GET /test/_search
{
   "query": {
     "match": {
      "password.keyword": "密码"
     }
   }
}

在这里插入图片描述

查询和筛选上下文

多个条件查询必须使用 bool must
查询name包含新,sex包含男,tel等于电话,age大于20的数据

filter 参数指示筛选器上下文。它的 and 子句用于筛选器上下文。它们会过滤掉 不匹配的文件,但它们会 不影响匹配文档的分数。

GET /test/_search
{
  "query": { 
    "bool": { 
      "must": [
        { "match": {  "name": "新" }},
        { "match": { "sex": "男" }}
      ],
      "filter": [ 
        { "term":  { "tel.keyword": "电话" }},
        { "range": { "age": { "gte": 20 }}}
      ]
    }
  }
}

在这里插入图片描述

复合查询

关键字
  • minimum_should_match 设置为 0:表示查询中至少有一个 should 子句需要匹配,也就是说,只要有一个条件满足,文档就有可能被返回。这通常会导致较高的召回率,但可能会降低精度。
    minimum_should_match 设置为 1:表示所有的 should 子句都需要匹配,即所有指定的条件都必须满足,文档才会被返回。这通常会提高查询的精度,但可能会减少召回率

  • must:这个关键字用来指定文档必须匹配的条件。只有满足所有must条件的文档才会被包含在搜索结果中。这类似于逻辑运算中的AND操作。

  • filter:filter子句也是用来指定必须匹配的条件,但它不会对查询结果进行评分。这意味着filter子句执行起来通常比must快,因为Elasticsearch会缓存filter子句的结果。这使得filter非常适合用于处理那些与相关性评分无关的查询条件,如性别、年龄等。filter子句可以看作是优化过的must子句。

  • must_not:这个关键字用来指定文档必须不匹配的条件。任何满足must_not条件的文档都会被排除在搜索结果之外。这类似于逻辑运算中的NOT操作。

  • should:should关键字用来指定文档应该匹配的条件。这些条件是可选的,如果文档满足了should中的任何一个条件,它的相关性评分会增加。如果没有满足任何should条件,也不会对文档的评分产生影响。这类似于逻辑运算中的OR操作(一般不用)。

总的来说,must和filter都用于确保文档满足特定条件,但filter更高效;must_not用于排除不符合条件的文档;而should用于增加匹配文档的相关性评分。在实际使用中,这些关键字可以组合使用,以构建复杂的查询逻辑。

  1. term:用于精确匹配某个字段的值
  2. range:用于指定一个范围,并匹配该范围内的值。
  3. wildcard:用于进行模糊匹配,可以使用通配符来指定模式
  4. terms:用于精确匹配多个值
  5. prefix:匹配以什么开头
    匹配name等于批量新增1并且age不等于3
    在这里插入图片描述
    匹配name等于批量新增1和名字的数据
POST /test/_search
{
  "query": {
    "bool": {
      "must": [
        {"terms": {
          "name.keyword": ["批量新增1","名字"]
        }}
      ]
    }
  }
}

匹配name等于批量新增1和名字的数据并且不以名开头

POST /test/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "name.keyword": [
              "批量新增1",
              "名字"
            ]
          }
        }
      ],
      "must_not": [
        {"wildcard": {
          "name": "名*"
        }}
      ]
    }
  }
}

匹配name等于批量新增1和名字的数据并且不以名开头并且年龄在10-30之间

POST /test/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "name.keyword": [
              "批量新增1",
              "名字"
            ]
          }
        },
        {
          "range": {
            "age": {
              "gte": 10,
              "lte": 30
            }
          }
        }
      ],
      "must_not": [
        {
          "prefix": {
            "name.keyword": "名"
          }
        }
      ]
    }
  }
}

分页查询

from 当前页
size 每页展示多少数据

GET /test/_search
{
  "from": 0,
  "size": 2
}

在这里插入图片描述

排序

升序

GET /test/_search
{
  "sort": [
    {
      "age": {
        "order": "asc"
      }
    }
  ]
}

在这里插入图片描述
降序

GET /test/_search
{
  "sort": [
    {
      "name.keyword": {
        "order": "desc"
      }
    }
  ]
}

在这里插入图片描述

修改

根据id

如果id存在则修改不存在就新增

PUT /test/_doc/2
{
  "name": "修改了",
  "password": "修改密码",
  "age": 322,
  "sex": "男女",
  "address": "adress",
  "tel": "tel"
}

在这里插入图片描述

根据查询条件修改

修改name = "修改了"的年龄为66

POST /test/_update_by_query?refresh
{
  "script": {
    "source": "ctx._source.age = 66"
  },
  "query": {
    "term": {
      "name.keyword": "修改了"
    }
  }
}

在这里插入图片描述

删除

和修改类似

根据id删除

DELETE /test/_doc/2

在这里插入图片描述

根据查询条件删除

先看有什么数据
在这里插入图片描述
删除name="名字"的数据
在这里插入图片描述

删除index(所有数据,慎重)


DELETE /test

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值