Elastic stack 技术栈学习(七)—— kibana中索引的基本操作(创建、删除、更新、查看)以及文档的基本操作

2023-05-16

目录

一、Restful风格 

二、关于索引的基本操作

1. 创建

(1)创建索引

(2)创建索引规则

 2.GET获取信息

(1)获得索引信息

(2)获得文档信息

(3)补充常用命令 GET _cat/... 获取es集群的信息

​ 3. 使用POST命令更新文档

4. 删除

(1)删除索引

(2)删除索引中的某个文档

三、关于文档的基本操作 

1、PUT/POST创建文档

2、GET获取文档

 3、POST更新文档

4、简单的搜索

(1) 在索引中根据关键字搜索文档

 5、复杂搜索

 (1)模糊查询

 (2)过滤不想看的字段

 (3)排序

 (4)分页查询

 (5)布尔值bool查询

 (6)模糊查询的多条件查询

 (7)term精确查询

 (8)精确查询的多条件查询

 (9)高亮查询 及 自定义高亮样式


一、Restful风格 

在kibana的创建索引、修改索引、删除索引等操作时,要严格遵循上面url地址的各个字段

二、关于索引的基本操作

1. 创建

(1)创建索引

找到Dev tool(开发工具),左栏就是发送JSON格式的命令的,点击绿色的三角形发送命令,右栏是返回结果。

PS:对于kibana7.0以后的版本,索引的type字段被省略掉了,或者说默认是_doc类型。上面的命令可以改成

POST /test1/zxf
POST /test1/_doc/zxf

然后,在head里查看一下

(2)创建索引规则

PUT /test2
{
  "mappings":{
    "properties": {
       "name":{
      "type":"text"
      },
       "age":{
      "type":"long"
      },
      "sex":{
      "type":"text"
      }
    }
  }
}

 在head里查看一下,test2这个索引里没有文档,是空的。

 2.GET获取信息

(1)获得索引信息

获取索引信息,我们在创建test1时没有指明文档内各个字段的类型,创建test2时,通过规则指定了文档内各个字段的类型(long,text,text)。分别获取看一下区别。

① test2:创建时指定了各个字段的类型。自然返回的结果和我们在上文规定的一样。

② test1:创建时没有指明各个字段的类型。从返回的结果可以看出,es默认识别出并赋予了"name""year"等字段的类型

(2)获得文档信息

  GET不仅可以获取索引信息,还可以具体到索引中每个文档的信息。

这里的文档类型type1写成_doc就行。

(3)补充常用命令 GET _cat/... 获取es集群的信息

查看集群的健康值:

GET _cat/health

查看es包含的所有索引的信息:

GET _cat/indices?v


 3. 使用POST命令更新文档

POST test1/_doc/zxf/_update
{
  "doc":{
    "name":"修改后的name"
  }
}

 提交后,返回的结果可以看出修改成功。

 然后去head里面确认一下

4. 删除

(1)删除索引

DELETE test2

 回到head确认一下,test2这个索引不在了。

当然,除了在kibana中通过发送json命令的形式删除索引,在head中也可以手动删除,操作如下

(2)删除索引中的某个文档

DELETE test1/_doc/zxf

 回到head确认一下,文档没有了

三、关于文档的基本操作 

1、PUT/POST创建文档

前面创建索引的时候已经顺便讲过了如何创建文档,比如

PUT test1/_doc/zxf
{
  "name":"zxf",
  "year":2022,
  "month":1,
  "date":25
}
 
PUT test1/_doc/wanna_sleep
{
  "name":"wanna sleep",
  "year":2022,
  "month":1,
  "date":25
}

2、GET获取文档

GET test1/_doc/morning

 3、POST更新文档

同上文,

POST test1/_doc/zxf/_update
{
  "doc":{
    "name":"修改后的name"
  }
}

4、简单的搜索

(1) 在索引中根据关键字搜索文档

# 搜索类型为type1的索引test1中,name字段值为zxf的文档
GET test1/type1/_search?q=name:zxf

# 搜索类型为type1的索引test1中,year字段值为2022的文档
GET test1/type1/_search?q=year:2022

这里存在一个问题, 如果没有给es安装分析器插件的话,就不能实现部分匹配,比如说通过name字段搜索,必须在命令中给出完整name才能匹配到。 为了实现部分匹配,我决定安装一个分词器。

elastic stack技术栈学习(八)—— 安装elasticsearch IK分词器(一个插件)_玛丽莲茼蒿的博客-CSDN博客

安装完毕后可以实现部分匹配了。 

 需要注意的是,部分匹配是根据字典进行拆分的,默认的英文字典有一些“呆板”,还无法实现像百度、谷歌那样的部分匹配。比如上面的查询我不用wanna,而是只输入wann,是查不到的,除非手动将wann加入字典。

 我又添加了如下两个中文name字段用来测试分词器。

 

 通过匹配的结果可以看出来,分词器既拆分了我们输入的关键字,也拆分了被查询的name字段。

 5、复杂搜索

(1)模糊查询

和MySQL一样,es使用query进行查询。elastic stack提供了很多匹配方式的API。

match是模糊查询:输入“敬业福”,相当于SQL语句的 WHERE name LIKE '%敬业福%' OR LIKE '%敬业%' OR LIKE '敬' OR LIKE '业' OR LIKE '业'(和SQL不同的是,es的模糊查询会分词)

term是精确查询:输入“我想要敬业福”,相当于SQL语句的 WHERE name = '我想要敬业福'

我们先采用match模糊查询方式去匹配:

GET test1/type1/_search
{
  "query":{
    "match": {
      "name": "福"
    }
  }
}

(2)过滤不想看的字段

如果我们只想看查询结果的name字段和year字段,不想看其他month、date字段,可以使用过滤器

GET test1/type1/_search
{
  "query":{
    "match": {
      "name": "福"
    }
  },
  "_source":["name","year"]
}

 

 (3)排序

为了测试,索引test1的文档更改如下:

 实现先按照月份再按照日期的倒序排序:


GET test1/type1/_search
{
  "query":{
    "match": {
      "name": "福"
    }
  },
  "sort":[
    {
      "month":{
        "order":"desc"  # 升序是"asc"
      },
      "date":{
        "order":"desc"
      }
    }
  ]
}

 

 (4)分页查询

下面是百度的分页:

GET test1/type1/_search
{
  "query":{
    "match": {
      "name": "福"
    }
  },
  "_source":["name","month"],
  "sort":[
    {
      "month":{
        "order":"desc"
      }
    }
  ],
  "from":0,
  "size":3
}

 注意,返回的查询结果下标从0开始。

(5)布尔值bool查询

        1) must关键字:实现的是“逻辑与” AND

        2) should关键字:实现的是“逻辑或”OR

        3) must_not关键字:实现的是“逻辑非”NOT,name字段不带“福”字的文档被查询出来了。

         4)过滤器

GET test1/type1/_search
{
  "query":{
    "bool": {
      "must": [
        {
          "match": {
            "name": "福"
          }
        }
      ],
      "filter": [
        {
          "range": {
            "month": {
              "gte": 3,
              "lte": 4
            }
          }
        }
      ]
    }
  }
}

 (6)模糊查询的多条件查询

多个条件直接用“空格”隔开,这一点比MySQL数据库查询方便得多。

GET test1/type1/_search
{
  "query":{
    "match": {
      "name": "福 敬业 wanna"
    }
  }
}

 (7)term精确查询

先看模糊查询的结果 

精确查询,没查到。必须要输入完整的“我想要敬业福”才能匹配到(相当于SQL中的 WHERE name = '我想要敬业福')

 (8)精确查询的多条件查询

模糊查询的多条件查询直接用“空格”隔开就行了,但是精确查询不能直接用空格隔开。

GET test1/type1/_search
{
 "query":{
   "bool": {
     "must": [
       {
         "term": {
           "month": 4
         }
       },
       {
         "term": {
           "date": 1
         }
       }
     ]
   }
 }
}

 (9)高亮查询 及 自定义高亮样式

  通过增加前标签和后标签自定义高亮的颜色等样式:

GET test1/type1/_search
{
 "query":{
   "match": {
     "name": "敬业福"
   }
 },
 "highlight":{
   "pre_tags": "<p class='key' style='color:red'>",
   "post_tags": "</p>", 
   "fields": {
     "name": {}
   }
 }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Elastic stack 技术栈学习(七)—— kibana中索引的基本操作(创建、删除、更新、查看)以及文档的基本操作 的相关文章

  • 什么是 C/C++ 数据段和堆栈大小?

    我读到这取决于编译器和操作系统架构 如何在使用 GCC 作为编译器的 Linux 系统上找到数据段和堆栈最大大小 让我和你一起实验一下 创建文件 test c 如下所示 int main void return 0 现在编译它 指定最大堆栈
  • 如何设置 Kibana SSO(通过 OAuth)? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我的公司非常努力地为所有第三方服务保留 SSO 我想让 Kibana 与我们的 Google Apps 帐户一起使用 那可能吗 如何
  • C 中的递归深度是否有任何硬连线限制

    正在讨论的程序尝试计算sum of first n natural numbers using recursion 我知道这可以使用一个简单的公式来完成n n 1 2但这里的想法是使用recursion 程序如下 include
  • Elasticsearch 6.2 / Kibana查询:一字段必须存在,一字段不能存在

    我的愿望是搜索 field 存在且 fields b 不存在的文档 有没有办法使用 Kibana 中的 Lucene 查询语法 Kibana 的 发现 部分中的 搜索 字段 来执行此操作 我尝试过使用 缺失 字段 b没有成功 exists
  • 在C语言中,我可以通过堆栈指针访问另一个函数中主函数的局部变量吗?

    我需要访问在 main 函数中定义的变量 a 的值 而不将其作为参数传递 main int a 10 func printf d n a void func i need access of variable a here 我怎样才能做到这
  • 如何增加 Qt 中线程的堆栈大小 - QThread::setStackSize() 似乎不起作用?

    从问题来看 运行批量插入或替换 500 行时 SQLite 堆栈溢出 为什么 https stackoverflow com questions 22576958 sqlite stack overflow when running a b
  • C - '=' 标记之前的预期表达式...在没有 '=' 的行上

    我疯狂地试图找出这个与现实 我的代码没有明显联系的错误消息 我一直在这里搜索并得出一个结论 你会讨厌 typedef 隐藏的指针 抱歉 这超出了我的控制范围 教授以这种方式提供了代码 我正在编辑问题中指定的代码 我弹出完整节点以避免每个推送
  • 每个进程是否都存在内核堆栈?

    每个用户空间进程是否都存在一个内核堆栈和一个用户空间堆栈 如果两个堆栈都存在 那么每个用户空间进程应该有 2 个堆栈指针 对吗 在 Linux 中 每个任务 用户空间或内核线程 都有一个 8kb 或 4kb 的内核堆栈 具体取决于内核配置
  • 什么是堆栈随机化以及它如何防止缓冲区溢出攻击?

    我从一本书上读到缓冲区溢出可能被用作注入攻击系统的漏洞代码的一种方式 和堆栈随机化是防止此类攻击的有效方法之一 我不明白是什么堆栈随机化以及它如何防止这些攻击 代替堆栈随机化克服 或更难 堆栈或缓冲区溢出的技术称为地址空间布局随机化 ASL
  • 适用于elasticsearch 7.0.1 和 kibana 7.0.1 的 docker-compose.yml

    我在 Windows 10 上将 Docker Desktop 与 Linux 容器结合使用 并希望通过 docker compose 文件启动最新版本的 elasticsearch 和 kibana 容器 使用 6 2 4 等旧版本时一切
  • 推送 Lua 表

    我已经创建了一个Lua表C 但我不知道如何将该表推入堆栈顶部 以便我可以将其传递给 Lua 函数 有谁知道如何做到这一点 这是我当前的代码 lua createtable state libraries size 0 int table i
  • C# 中的 Stack<> 实现

    我最近一直在实现递归目录搜索实现 并且使用堆栈来跟踪路径元素 当我使用 string Join 连接路径元素时 我发现它们被颠倒了 当我调试该方法时 我查看了堆栈 发现堆栈内部数组中的元素本身是相反的 即最近 Push 的元素位于内部数组的
  • 平衡括号问题的优化解

    给定一个仅包含字符的字符串 and 判断输入字符串是否有效 输入字符串在以下情况下有效 左括号必须由相同类型的括号封闭 左括号必须按正确的顺序关闭 请注意 空字符串也被视为有效 示例1 Input Output true Example 2
  • 了解C/C++中函数调用的堆栈框架? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我也是 C C 和汇编语言的新手 这
  • field 和 field.keyword 之间的区别

    如果我将一个包含多个字段的文档添加到 Elasticsearch 索引中 当我在 Kibana 中查看它时 我每次都会得到相同的字段两次 其中之一将被称为 some field 另一个将被称为 some field keyword 这种行为
  • 在 Eclipse 中导航 Java 调用堆栈

    在调试器中像GDB http sources redhat com gdb 当您在断点处停止时 您可以轻松地向上移动调用堆栈并检查相关的源和堆栈帧数据 在 Eclipse 中如何做到这一点 In the 调试视角 http www ibm
  • 无法通过远程连接连接到kibana

    我已经在服务器上安装了 Kibana 5 4 和 Elastic search 5 4 我可以使用以下命令在本地计算机上通过curl 访问 Kibana 和 Elastic search curl localhost 5601 我得到以下回
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 使用正则表达式、kibana 搜索数组中的元素

    我正在搜索包含数组字段的记录payload params 我想显示包含该字符串的所有字段aabb 例子 payload params 3raabb 44aabb66 grgeg 展示 3raabb 44aabb66 如何在数组上使用正则表达
  • Java 中的堆栈,“包含”问题

    我在程序中使用堆栈 但是当程序尝试检查堆栈中包含哪些元素时遇到问题 我在堆栈中使用整数数组 简短的例子是 Stack

随机推荐

  • Docker入门教程

    目录 一 Docker介绍 为什么需要沙箱机制 xff1f 什么是沙箱机制 xff1f 二 Docker的优点 三 安装Docker 四 Docker的组成 问题 xff1a 是否不理解容器与镜像 xff1f 五 启动Docker 六 安装
  • ubuntu下录屏软件kazam及使用问题

    Ubuntu下视频录制工具kazam及问题 视频录制工具 在Ubuntu或linux下录制视频应该是每个用linux的朋友都会用到的 xff0c 这里笔者使用了Kazam 功能挺多的 xff0c 包括截屏 xff08 虽然ubuntu有自带
  • NUC安装Ubuntu18.04系统

    NUC安装Ubuntu18 04系统 基本信息前言安装过程配置Ubuntu18 04系统镜像安装系统解决系统字体过大 分辨率低的问题测试 其他软件安装 基本信息 Time xff1a 2021 3 9使用NUC版本 xff1a 猎豹峡谷NU
  • 11代i5 NUC使用记录

    11代i5 NUC使用记录 NUC信息NUC选型配置过程内存条固态安装安装windows安装Ubuntu18 04使用ROS2GO 其他学习总结 NUC信息 NUC基本信息 xff1a NUC xff1a Next Unit of Comp
  • ROS rosdep initupdate报错解决方法

    ROS rosdep init update报错解决方法 在安装ROS的过程中 xff0c 很多同学在执行上述指令时会提示以下错误 xff1a ERROR cannot download default sources list from
  • Ubuntu18.04下使用D435i跑ROS包和ORB-SLAM2

    Ubuntu18 04下使用D435i跑ROS包和ORB SLAM2相关问题 前言主要问题及解决方法汇总一 realsense包版本问题二 无法定位安装包问题三 警告问题四 如何检测是否发布五 利用D435i跑ORB SLAM2一点注意 后
  • 小觅双目sdk地址

    https mynt eye d sdk readthedocs io zh CN latest sdk install ubuntu src html
  • FreeRTOS移植STM32F4

    64 TOC FreeRTOS FreeRTOS移植到STM32F4上 本文章讲解一下如何将FreeRTOS移植到STM32F4开发板上 xff0c 如有不对之处 xff0c 欢迎指正 xff0c 多多交流 一 创建工程文件及代码调试 我们
  • stm32使用串口进行通讯之发送数据

    前提准备 xff1a 1 库函数基础模板 2 stlink下载器 USB TTL下载器 单片机最小开发板stm32F103C8T6 3 面包板及相关接线 4 vscode与keil的联合开发更流畅 5 串口软件 xff0c 这个下面视频有
  • 什么是事件流(总结),ECMAScript6(总结)

    1 xff0c 事件流 xff08 1 xff09 事件流是指页面 接收事件的顺序 xff08 2 xff09 假设页面中的元素都具备相同的事件 并且这些个元素之间是相互嵌套的 关系 xff08 3 xff09 那么在触发一个元素的事件时候
  • rabbitmq消息可靠性分析

    通过firehose插件跟踪消息过程 开发测试阶段用于分析消息消费的过程 xff0c 生产关闭 xff0c 以免影响整体性能 rabbitmq tracing 插件相当于Firehose 的GUI 版本 xff0c 能跟踪RabbitMQ
  • vscode拉取git代码到本地提示 在签出前,请清理存储库工作树

    最近使用vscode拉取git代码到本地提示 在签出前 请清理存储库工作树 xff0c 具体如图 xff1a 一 原因分析 原因很简单 xff0c 就是因为本地代码和git远程库代码存在冲突 xff0c 也就是你改的文件 xff0c 别人也
  • UCOSIII 系统(STM32任务管理)学习笔记

    作者 xff1a 瓴 时间 xff1a 2021 07 28 UCOSIII 系统 xff08 STM32任务管理 xff09 学习笔记 UCOSIII 系统学习笔记一 UCOSIII 任务管理1 任务状态2 任务控制块 OS TCB3 任
  • 主机字节序和网络字节序

    1 大端字节序和小端字节序 xff1a 大端字节序存储时值的高位存储在较小的地址 xff0c 值的低位存储在较大的地址 小端字节序存储时值的高位存储在较大的地址 xff0c 值的低位存储在较小的地址 以0x12345678为例 xff1a
  • 神经网络中Batch和Epoch

    随机梯度下降法是一种具有大量超参数的学习算法 通常会使初学者感到困惑的两个超参数 Batch大小和Epoch数量 它们都是整数值 xff0c 看起来做的事情是一样的 在这篇文章中 xff0c 您将发现随机梯度下降中Batch和Epoch之间
  • return返回一个数组(返回多个值)的方法

    两种方法可以让函数返回多个值 xff0c 一种是返回数组 xff0c 一种是返回结构体 下面只是返回数组的 xff1a span class token keyword int span span class token operator
  • 运行Python文件报错Microsoft Visual C++ Redistributable is not installed

    运行带有import torch的文件报错 xff1a Microsoft Visual C 43 43 Redistributable is not installed 提示可能是Microsoft Visual C 43 43 Redi
  • 数组全部赋值为0

    一 通用方法 xff08 强烈推荐 xff01 xff09 利用string h封装好的函数 span class token macro property span class token directive keyword includ
  • QT学习笔记(六)——①进度条可拖动、点击②有暂停按钮 的视频播放器

    一 配置文件更改 用到多媒体的话 xff0c 需要修改配置文件的第一行 xff0c 后面加一句 sql multimedia multimediawidgets 修改后的配置文件前3行如下 QT span class token opera
  • Elastic stack 技术栈学习(七)—— kibana中索引的基本操作(创建、删除、更新、查看)以及文档的基本操作

    目录 一 Restful风格 二 关于索引的基本操作 1 创建 xff08 1 xff09 创建索引 xff08 2 xff09 创建索引规则 2 GET获取信息 xff08 1 xff09 获得索引信息 xff08 2 xff09 获得文