总结Kibana DevTools如何操作elasticsearch的常用语句

一、操作es的工具

  • ElasticSearch Head
  • Kibana DevTools
  • ElasticHQ

本文主要是总结Kibana DevTools操作es的语句。

二、搜索文档

1、根据ID查询单个记录

GET /course_idx/_doc/course:20

在这里插入图片描述

2、term

匹配"name"字段的值为"6789999"的文档

  • 类似于sql语句中的等于==,属于精准匹配
GET /course_idx/_search
{
  "query":{
    "term": {
      "name": "6789999"
    }
  }
}

3、terms

匹配课程编号包含"C00B5230920105650700A1"、"C00B5230921171813401A8"中任意一个值的文档。

  • 类似于in集合查询

GET course_idx/_doc/_search
{
    "query" : {
        "terms" : {
            "courseNo" : [
              "C00B5230920105650700A1",
              "C00B5230921171813401A8"
          ],
          "boost" : 1.0
        }
    }
}

  • 返回内容
{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 2,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "course_idx",
        "_type" : "_doc",
        "_id" : "course:23",
        "_score" : 1.0,
        "_source" : {
          "id" : "course:23",
          "courseType" : 0,
          "courseNo" : "C00B5230921171813401A8",
          // 省略其他字段
        }
      },
      {
        "_index" : "course_idx",
        "_type" : "_doc",
        "_id" : "course:7",
        "_score" : 1.0,
        "_source" : {
          "id" : "course:7",
          "courseType" : 0,
          "courseNo" : "C00B5230920105650700A1",
          // 省略其他字段
        }
      }
    ]
  }
}

4、match

用于在文本字段中执行全文搜索,可以模糊匹配文本。它会分析文本,将其分成词汇,并搜索匹配的词汇。

GET /course_idx/_search
{
  "query": {
    "match": {
      "name": "课"
    }
  }
}

5、multi_match

用于在多个字段上执行全文搜索。你可以指定多个字段,并搜索它们中的匹配项。

  • 字段name或者courseNo检索匹配"课"字的记录
GET /course_idx/_search
{
  "query": {
    "multi_match": {
      "query": "课",
      "fields": ["name", "courseNo"]
    }
  }
}

6、bool

  • must(必须匹配)

查询courseNo=‘C005230922B133545556M4’ and useCount=0的记录

  • 相当于sql中的and
GET /course_idx/_search
{
  "query": {
    "bool": {
      "must": [
        { "term": { "courseNo": "C005230922B133545556M4" } },
        { "term": { "useCount": "0" } }
      ]
    }
  }
}
  • should(可以匹配,比must的强制性小得多)

查询courseNo=‘C005230922B133545556M4’ or useCount=5的记录

  • 相当于sql中的or
GET /course_idx/_search
{
  "query": {
    "bool": {
      "should": [
        { "term": { "courseNo": "C005230922B133545556M4" } },
        { "term": { "useCount": "5" } }
      ]
    }
  }
}
  • 查询结果,匹配到了3条记录,第一条记录满足第一个条件,第二三条记录满足第二个条件。
{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 3,
    "max_score" : 5.0834727,
    "hits" : [
      {
        "_index" : "course_idx",
        "_type" : "_doc",
        "_id" : "course:35",
        "_score" : 5.0834727,
        "_source" : {
          "id" : "course:35",
          "courseType" : 0,
          "courseNo" : "C005230922B133545556M4",
          "useCount" : 0
        }
      },
      {
        "_index" : "course_idx",
        "_type" : "_doc",
        "_id" : "lecture:942",
        "_score" : 1.0,
        "_source" : {
          "id" : "lecture:942",
          "courseType" : 2,
          "courseNo" : "L005231012B1421252702M5",
          "useCount" : 5
        }
      },
      {
        "_index" : "course_idx",
        "_type" : "_doc",
        "_id" : "lecture:943",
        "_score" : 1.0,
        "_source" : {
          "id" : "lecture:943",
          "courseType" : 2,
          "courseNo" : "L005231012142125B2703M4",
          "useCount" : 5
        }
      }
    ]
  }
}

  • must_not(不匹配)

对must的取反操作,它是一个逻辑非运算。

  • 类似于sql 中的 !=
GET /course_idx/_search
{
  "query": {
    "bool": {
      "must_not": [
        { "term": { "courseNo": "C005230922B133545556M4" } }
      ]
    }
  }
}

7、wildcard

允许使用通配符进行模糊匹配。

  • 星号* :星号用于匹配零个或多个字符。例如,app* 将匹配任何以"app"开头的词汇,例如"apple"、"application"等。

  • 问号?:问号用于匹配一个单一字符。例如,te?t 将匹配"test"、“text"等,但不会匹配"tent”,因为它包含了两个不同的字符。

GET /course_idx/_search
{
  "query": {
    "wildcard": {
      "name.keyword": "22*"
    }
  }
}
  • 返回报文
{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 31,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "course_idx",
        "_type" : "_doc",
        "_id" : "lecture:184",
        "_score" : 1.0,
        "_source" : {
          "id" : "lecture:184",
          "courseType" : 2,
          "courseNo" : "L005B2310111036451771M7",
          "creatorId" : 155954,
          "name" : "22"
        }
      },
      {
        "_index" : "course_idx",
        "_type" : "_doc",
        "_id" : "lecture:211",
        "_score" : 1.0,
        "_source" : {
          "id" : "lecture:211",
          "courseType" : 2,
          "courseNo" : "L005B2310111052501806M4",
          "creatorId" : 155954,
          "name" : "222"
        }
      },
      {
        "_index" : "course_idx",
        "_type" : "_doc",
        "_id" : "lecture:557",
        "_score" : 1.0,
        "_source" : {
          "id" : "lecture:557",
          "courseType" : 2,
          "courseNo" : "L0B052310111423472182M8",
          "creatorId" : 155954,
          "name" : "22222"
        }
      }
    ]
  }
}

8、prefix

用于匹配字段的前缀

  • 类似于sql中的 like ‘22%’
GET /course_idx/_search
{
  "query": {
    "prefix": {
      "name": "22"
    }
  }
}

9、fuzzy

模糊查询name名称字段中包含"课"字的记录。

  • 依赖于分词器
GET /course_idx/_search
{
  "query": {
    "fuzzy": {
      "name": "课"
    }
  }
}
  • fuzzy查询还允许你配置其他选项,如模糊度、前缀长度和最大扩展数,以控制查询的模糊度和性能。

三、更新文档

POST /course_idx/_doc/course:20
{
  "doc": {
    "name": "6789"
  }
}

// 修改成功!!
{
  "_index" : "course_idx",
  "_type" : "_doc",
  "_id" : "course:20",
  "_version" : 14,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 11960,
  "_primary_term" : 1
}
  • 再次查询,发现文档的name内容是更新了,但是文档的字段也只剩下name了。

在这里插入图片描述
所以,在使用本操作语句的时候,需要特别注意这一点。

四、删除文档

DELETE /course_idx/_doc/course:20

在这里插入图片描述

五、索引

1、创建索引

这里只列举出几个字段,并不是全部字段的定义。

PUT /course_idx
{
    "mappings":{
        "_doc":{
            "properties":{
                "courseType":{
                    "type":"integer"
                },
                "creatorId":{
                    "type":"long"
                },
                "courseNo":{
                    "type":"keyword"
                },
                "name":{
                    "type":"text",
                    "fields":{
                        "keyword":{
                            "ignore_above":256,
                            "type":"keyword"
                        }
                    }
                },
                "id":{
                    "type":"keyword"
                }
            }
        }
    }
}

2、删除索引

谨慎操作,这个会删除掉所有数据及结构。

DELETE /course_idx

六、聚合查询

1、计数

GET /course_idx/_count

// 总记录数是1153条
{
  "count" : 1153,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  }
}

2、平均值

统计字段useCount-使用次数的平均数

GET /course_idx/_search
{
  "aggs": {
    "avg_useCount": {
      "avg": {
        "field": "useCount"
      }
    }
  }
}

在这里插入图片描述

3、汇总

使用次数的汇总

GET /course_idx/_search
{
  "aggs": {
    "total_useCount": {
      "sum": {
        "field": "useCount"
      }
    }
  }
}

在这里插入图片描述

4、bucket桶查询

使用次数的桶统计

GET /course_idx/_search
{
  "aggs": {
    "useCount_ranges": {
      "range": {
        "field": "useCount",
        "ranges": [
          { "from": 0, "to": 5 },
          { "from": 5, "to": 10 },
          { "from": 10, "to": 100 }
        ]
      }
    }
  }
}

在这里插入图片描述

5、最大/小值

求最大使用次数和最小使用次数。

GET /course_idx/_search
{
  "aggs": {
    "max_useCount": {
      "max": {
        "field": "useCount"
      }
    },
    "min_useCount": {
      "min": {
        "field": "useCount"
      }
    }
  }
}

在这里插入图片描述

6、日期直方图

按天的直方图,统计每天的文档数量

GET /course_idx/_search
{
  "aggs": {
    "date_histogram": {
      "date_histogram": {
        "field": "createdDate",
        "interval": "day"
      }
    }
 }
}

在这里插入图片描述

七、分词器

es默认的分词器是standard。
下面以“数学的课程库”三个字为示例,看下分词结果。

GET /_analyze
{
  "analyzer": "standard",
  "text": "数学的课程库"
}


GET /_analyze
{
  "text": "数学的课程库"
}

结果都是“数”“学”“的”“课”“程”“库”。

想要更好的支持中文分词,一般的建议是按照ik分词器。
如果想要进一步自定义分词,需要编写你自己的dict文本。

  • 建议在安装es的时候,就把需用的分词器安装OK
  • 第二步在建立es索引的时候,指定具体字段使用什么分词器(否则它将使用对中文不是很友好的标准分词器)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/122410.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

载波通讯电表的使用年限是多久?

随着科技的飞速发展,智能家居、物联网等概念逐渐深入人心,载波通讯电表作为一种新型的智能电表,凭借其低功耗、高可靠性、远程通讯等优点,广泛应用于居民用电、工业生产等领域。那么,载波通讯电表的使用年限是多久呢&a…

vTESTstudio的使用

vTESTstudio介绍 vTESTstudio是Vector公司专为ECU自动化测试而研发的测试用例编写软件,可用于从模型测试到系统确认的所有开发阶段。它集成了多种用例编辑方法,能有效提高测试人员对测试设计的效率、具有可复用性等优点。它支持Python作为测试编程语言&…

vtk夹角计算控件

开发环境: Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码目的:学习与总结 demo解决问题:renderWindow中创建一个夹角测量控件,通过三个点确定一个夹角 典型的控件类继承关系&am…

第134届广交会圆满落幕,百华鞋业不负众望,载誉收官!

第134届广交会线下展在广州圆满落幕,交出了亮眼的成绩单。相比往届,本届广交会展览总面积扩至155万平方米,展位总数7.4万个,展区总数55个,参展企业28533家,均创历史新高。据央媒等相关报道,本届…

Ubuntu LTS 坚持 10 年更新不动摇

导读Linux 内核开发者 Jonathan Corbet 此前在欧洲开源峰会上宣布,LTS 内核的支持时间将从六年缩短至两年,原因在于缺乏使用和缺乏支持。稳定版内核维护者 Greg Kroah-Hartman 也表示 “没人用 LTS 内核”。 近日,Ubuntu 开发商 Canonical 发…

COOHOM通过采用亚马逊云科“专库专用”的方式,为云原生的构建提供稳定的数据支撑

全球化浪潮下,面对全球化业务发展带来的新需求与新挑战,越来越多的企业开启了云原生构建旅程,以推动业务系统快速迭代,为国际业务的拓展打下坚实的基础。COOHOM是杭州群核信息技术有限公司旗下的国际化品牌。为全球企业和个人提供…

taro(踩坑) npm run dev:weapp 微信小程序开发者工具预览报错

控制台报错信息: VM72:9 app.js错误: Error: module vendors-node_modules_taro_weapp_prebundle_chunk-JUEIR267_js.js is not defined, require args is ./vendors-node_modules_taro_weapp_prebundle_chunk-JUEIR267_js.js 环境: node 版本&#x…

KubeSphere v3.4.0 部署K8S Docker + Prometheus + grafana

KubeSphere v3.4.0 部署K8S 1、整体思路2、修改linux主机名3、 离线安装3.1 问题列表3.2 执行命令成功列表 1、整体思路 将KubeSphere v3.4.0 安装包传输到其中一台机器修改Linux主机名(选取3台,修改为master01、master02、master03)安装官方…

电脑监控软件怎样防止数据泄露丨实战干货分享

电脑监控软件大家应该都不陌生吧,原本它是国外的产物,只不过在02年的时候,在国内出现。 一开始它的功能也仅限于监控应该的电脑画面,但是随着电脑问题逐渐增加,其他和公司企业管理、员工管理、防止数据泄露的功能就都…

仿mudou库one thread one loop式并发服务器

目录 1.实现目标 2.HTTP服务器 实现高性能服务器-Reactor模型 模块划分 SERVER模块: HTTP协议模块: 3.项目中的子功能 秒级定时任务实现 时间轮实现 正则库的简单使用 通⽤类型any类型的实现 4.SERVER服务器实现 日志宏的封装 缓冲区Buffer…

vscode中 vue3+ts 项目的提示失效,volar插件失效问题解决方案

文章目录 前情提要bug回顾解决方案最后 前情提要 说起来很耻辱,从mac环境换到window环境,vscode的配置都是云端更新过来的,应该是一切正常才对,奇怪的是我的项目环境出现问题了,关于组件的ts和追踪都没有效果&#xff…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Maven核心概念

一.Maven的POM POM全称&#xff1a;Project Object Model【项目对象模型】&#xff0c;将项目封装为对象模型&#xff0c;便于使用Maven管理【构建】项目 pom.xml常用标签 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://m…

C#中.NET 7.0控制台应用使用LINQtoSQL、LINQtoXML

目录 一、新建控制台应用和数据库连接 二、手动添加System.Data.Linq程序包 三、手动添加System.Data.SqlClient程序包 四、再次操作DataClasses1.dbml 五、示例 1.源码 2.xml文件 默认安装的.NET 7.0控制台应用是不支持使用LINQtoSQL、LINQtoXML的。 默认安装的.NET F…

基于springboot实现高校党务平台管理系统【项目源码】计算机毕业设计

基于springboot实现高校党务平台管理系统演示 Java技术 Java是由Sun公司推出的一门跨平台的面向对象的程序设计语言。因为Java 技术具有卓越的通用性、高效性、健壮的安全性和平台移植性的特点&#xff0c;而且Java是开源的&#xff0c;拥有全世界最大的开发者专业社群&#x…

提升绘图效率不再难,看看这8款AI流程图软件,一键快速生成流程图!

流程图是表示流程、系统和思想的重要视觉辅助工具。在当今数字时代&#xff0c;AI技术的出现已经彻底改变了制作流程图的方式。 在本文中&#xff0c;我们将与各位分享8款好用的AI流程图软件&#xff0c;借助每款软件内置的AI能力&#xff0c;可以快速绘制出一份完整的流程图&…

物联网中的毫米波雷达:连接未来的智能设备

随着物联网&#xff08;IoT&#xff09;技术的飞速发展&#xff0c;连接设备的方式和效能变得越来越重要。毫米波雷达技术作为一种先进的感知技术&#xff0c;正在为物联网设备的连接和智能化提供全新的可能性。本文将深入探讨毫米波雷达在物联网中的应用&#xff0c;以及它是如…

城市内涝积水预防,万宾科技内涝监测仪如何预警?

近几年来城市内涝所引发的安全隐患极为突出&#xff0c;影响着城市道路安全&#xff0c;而且也让市民心中多有惶恐。一旦城市内涝问题出现背后不仅是路面积水问题&#xff0c;更会导致城市无法正常运行&#xff0c;导致市民日常生活和工作受到影响。所以对于排水防涝设施的建设…

法治智能起航 | 拓世法宝AI智慧政务一体机重塑法治格局,开启智能司法新篇章

在科技的巨轮推动下&#xff0c;我们的社会正快速迈向一个以数据和智能为核心的新时代。在这个波澜壮阔的变革中&#xff0c;人工智能&#xff08;AI&#xff09;显得尤为突出&#xff0c;它不仅是科技进步的象征&#xff0c;更是未来发展的助力者。 2023年&#xff0c;最高人…

世微 60V高端电流采样降压恒流驱动器 LED车灯备用灯信号灯 AP5179

产品描述 AP5179是一款连续电感电流导通模式的降压恒流源&#xff0c;用于驱动一颗或多颗串联LED输入电压范围从 5 V 到 60V&#xff0c;输出电流 最大可达 2.0A 。根据不同的输入电压和 外部器件&#xff0c; 可以驱动高达数十瓦的 LED。 内置功率开关&#xff0c;采用高端电流…

【C/PTA——循环结构3】

C/PTA——循环结构3 7-1 二分法求多项式单根1.题目要求2.代码实现 7-2 循环-十进制转化1.题目要求2.代码实现 7-3 梅森数1.题目要求2.代码实现 7-4 单词长度1.题目要求2.代码实现 7-5 21循环-求和31.题目要求2.代码实现 7-6 21循环-金字塔1.题目要求2.代码实现 7-7 循环-杨辉三…
最新文章