kibana操作elasticsearch(增删改查)

news2024/11/16 9:56:59

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

  • 1. 环境安装
  • 2. es与mysql对比在这里插入图片描述
  • 3. kibana界面
  • 4. 创建索引
  • 5. 删除索引
  • 6. 查看ES相关信息
    • 6.1 查看es健康状态
    • 6.2 查看es的节点
      • 6.2.1 查看es的所有节点
      • 6.2.2 查看es的主节点
    • 6.3 查看es的索引
      • 6.3.1 查看es的所有索引
      • 6.3.2 查看es的所有索引并指定响应返回的数据格式
      • 6.3.3 查看es的索引设置
  • 7. 新增文档数据
    • 7.1 自定义文档id可用PUT
    • 7.2 系统默认文档id可用POST
  • 8. 查询文档数据
    • 8.1 查询全部文档数据
    • 8.2 查询单个记录
    • 8.3 查询文档的字段数据
    • 8.3 条件查询文档数据
      • 8.3.1 根据指定字段的值查询对应数据
      • 8.3.2 根据指定字段的值(多个值)查询对应数据
      • 8.3.3 根据指定字段的值(多个值)查询对应数据(短句匹配)
      • 8.3.4 根据指定字段的值(多个值)查询对应数据(精确匹配)
      • 8.3.5 多字段匹配条件查询
      • 8.3.6 符合条件查询
      • 8.3.7 过滤条件查询
    • 8.4 条件查询文档数据(分页、排序、展示)
  • 9. 修改/更新文档数据
    • 9.1 PUT修改
    • 9.2 POST更新
  • 10. 删除文档数据
    • 10.1 删除单个文档数据
    • 10.2 删除某索引下的所有文档
  • 11. 批量操作bulk
    • 11.1 批量删除
    • 11.2 批量新增(需要有请求体)
    • 11.3 批量索引(需要有请求体)
    • 11.4 批量更新


1. 环境安装

先安装elasticsearch和kibana
可参考:
elasticsearch下载、安装、配置
kibana下载、安装、配置

2. es与mysql对比在这里插入图片描述

索引index即数据库table
类型type即表数据类型
文档document即数据记录row就是一条记录
字段field即数据字段信息column

3. kibana界面

安装好kibana和es之后,先启动es再启动kibana
然后访问kibana界面,找到management中的dev tools进行es的增删改查操作
在这里插入图片描述
在界面的Console控制台输入并执行命令,每行命令后会有一个绿色三角形,点击即可运行命令
在这里插入图片描述

4. 创建索引

语法格式:

PUT 索引名

如创建索引名为deviceinfo的索引

PUT deviceinfo

注:不能有特殊字符,不能有大写字母,支持纯小写

也可以创建索引时设置索引,不设置则使用系统默认设置

PUT deviceinfo/
{
    "settings":{
        "index":{
            "number_of_shards":2,
            "number_of_replicas":1
        }
    }
}

number_of_shards 分片数量,建立后不可修改
number_if_replicas 备份数量

5. 删除索引

语法格式:

DELETE 索引名

如删除索引名为deviceinfo的索引

DELETE deviceinfo

6. 查看ES相关信息

6.1 查看es健康状态

GET _cat/health

或加上v参数输出详细信息

GET _cat/health?v

6.2 查看es的节点

6.2.1 查看es的所有节点

GET _cat/nodes

或加上v参数输出详细信息

GET _cat/nodes?v

6.2.2 查看es的主节点

GET _cat/master

6.3 查看es的索引

6.3.1 查看es的所有索引

GET _cat/indices

或加上v参数输出详细信息

GET _cat/indices?v

6.3.2 查看es的所有索引并指定响应返回的数据格式

GET _cat/indices?format=json

6.3.3 查看es的索引设置

语法格式:

GET 索引名/_settings

如查看索引名为deviceinfo的索引设置

GET deviceinfo/_settings

在这里插入图片描述

7. 新增文档数据

新增文档可用PUT或POST

7.1 自定义文档id可用PUT

新增数据时带有文档id参数(自己定义命名的)的情况,用PUT
语法格式:

PUT 索引名/类型名/文档id
{
	字段名1:字段值1,
	字段名2:字段值2,
	字段名3:字段值3
}

如新增索引deviceinfo下类型为netinfo文档id为1的文档数据

PUT deviceinfo/netinfo/1
{
	"net_name":"http001",
	"net_type":"3g",
	"net_size":"0.15M"
}

执行后结果如下
在这里插入图片描述

7.2 系统默认文档id可用POST

当新增的参数中不加文档id参数时,则用POST,新增后系统自动生成默认的文档id(一个字符串)
语法格式:

POST 索引名/类型名/
{
	字段名1:字段值1,
	字段名2:字段值2,
	字段名3:字段值3
}

如新增索引deviceinfo下类型为netinfo文档id为1的文档数据

POST deviceinfo/netinfo/
{
	"net_name":"http002",
	"net_type":"3g",
	"net_size":"0.17M"
}

注:如果使用默认的文档id,前提是这个类型必须是已经存在的,如果是新增的类型不带文档id执行命令会失败
新增后结果如下
在这里插入图片描述

8. 查询文档数据

到指定的索引、类型查看文档数据

8.1 查询全部文档数据

语法格式:

GET 索引名/类型名/_search

或者

GET 索引名/类型名/_search
{
	"query":{
		"match_all":{}
	}
}

如查询索引名为deviceinfo类型为netinfo的文档数据

GET deviceinfo/netinfo/_search

或者

GET deviceinfo/netinfo/_search
{
	"query":{
		"match_all":{}
	}
}

执行命令可以查看到之前插入的两条文档数据,结果如下
在这里插入图片描述

8.2 查询单个记录

语法格式:

GET 索引名/类型名/文档id

如查询索引名为deviceinfo类型名为netinfo中文档id为1的数据

GET deviceinfo/netinfo/1

结果如下
在这里插入图片描述

8.3 查询文档的字段数据

语法格式:

GET 索引名/类型名/文档id?_source=字段名1,字段名2

如查询索引名为deviceinfo类型名位netinfo文档id为1字段名为net_name和net_type的数据

GET deviceinfo/netinfo/1?_source=net_name,net_type

查询结果如下
在这里插入图片描述

8.3 条件查询文档数据

8.3.1 根据指定字段的值查询对应数据

GET /索引名/_search
{
	"query":{
		"match":{
			"字段名":"字段值"
		}
	}
}

8.3.2 根据指定字段的值(多个值)查询对应数据

查询字段名的值为值1和值2的数据

GET /索引名/_search
{
	"query":{
		"match":{
			"字段名":"字段值1 字段值2"
		}
	}
}

8.3.3 根据指定字段的值(多个值)查询对应数据(短句匹配)

查询字段名的值为值1和值2的数据
match_phrase短句匹配,不会对查询条件进行分词检索

GET /索引名/_search
{
	"query":{
		"match_phrase":{
			"字段名":"字段值1 字段值2"
		}
	}
}

8.3.4 根据指定字段的值(多个值)查询对应数据(精确匹配)

查询字段名的值为值1和值2的数据
match_phrase短句匹配
字段名后加.keyword表示精确匹配,匹配的条件就是要显示字段的全部值,要进行精确匹配的

GET /索引名/_search
{
	"query":{
		"match_phrase":{
			"字段名.keyword":"字段值1 字段值2"
		}
	}
}

8.3.5 多字段匹配条件查询

查询字段名的值为值1和值2的数据
multi_match表示多字段匹配查询方式
query是多个字段的对应的同一个值
fields表示多个字段的集合
如下为查询字段名1和字段名2的值都为字段值的数据

GET /索引名/_search
{
	"query":{
		"multi_match":{
			"query":"字段值"
			"fields":["字段名1","字段名2"]
		}
	}
}

8.3.6 符合条件查询

bool表示符合查询
must表示必须达到must列举的所有条件
must_not表示必须不匹配must_not列举的所有条件
should表示应该满足should所列举的条件,类似or
达到should列举的条件,如果达到会增加相关文档的评分,不会改变查询的结果
如果query中只有should且只有一种匹配规则,则should的条件就会被作为默认匹配条件而去改变查询结果

GET /索引名/_search
{
	"query":{
		"bool":{
			"should":[
				{
					"match":{
						"字段名1":"字段值1"
					}
				},
				{
					"match":{
						"字段名2":"字段值2"	
					}
				}
			],
			"must":[
				{
					"match":{
						"字段名3":"字段值3"
					}
				}	
			]
		}
	}
}

8.3.7 过滤条件查询

filter结果过滤,不计算得分,不是所有的查询都会产生分数,仅用于filter的文档查询更不会产生分数

GET /索引名/_search
{
	"query":{
		"bool":{
			"must":[
				{
					"match":{
						"字段名1":"字段值1"
					}
				}
			],
			"filter":{
				"range":{
					"过滤字段名":{
						"gte":"10",
						"lte":"100"	
					}	
				}
			}
		}
	}
}

更多查询技巧请参考:kibana操作es

8.4 条件查询文档数据(分页、排序、展示)

可添加如下参数进行条件查询、分页查询、排序、指定字段查询

GET 索引名/_search
{
	"query":{
		"match_all":{}
	},
	"from":0,
	"size":5,
	"sort":{
		"排序字段名":{
			"order":"desc"
		}
	},
	"_source":["字段名1","字段名2"]
}

注:
match_all 查询类型,查询所有
from 分页查询从0开始
size 分页查询每页5个
sort 排序,可指定字段进行排序
_source 指定查询结果展示的字段,支持多个

9. 修改/更新文档数据

可用PUT方式或者POST方式

9.1 PUT修改

PUT属于修改,必须包含文档id
语法格式:

PUT 索引名/类型名/文档id
{
	"字段名1":"新的字段值1",
	"字段名2":"新的字段值2",
	"字段名3":"新的字段值3"
}

如修改索引名为deviceinfo类型名为netinfo文档id为1的文档数据

PUT deviceinfo/netinfo/1
{
	"net_name":"http003",
	"net_type":"4g",
	"net_size":"0.28M"
}

查询修改后的内容

GET deviceinfo/netinfo/1

内容已更新
在这里插入图片描述

9.2 POST更新

使用post进行更新数据
POST属于新增,
当不带_update时,没有文档id则会新增文档id,属于新增数据,有id时则执行修改操作
当带_update时,会比较doc中的字段值是否一致,一致则不修改,不一致则修改
当不带_update时,重复执行更新操作,数据更新反馈是成功

语法格式:

POST 索引名/类型名/文档id/_update
{
	"doc":{
		"字段名":"新的字段值"
	}
}

如修改索引名为deviceinfo类型名为netinfo文档id为1字段名为net_name的值

POST deviceinfo/netinfo/1/_update
{
	"doc":{
		"net_name":"http004"
	}
}

修改后查询结果如下

GET deviceinfo/netinfo/1

在这里插入图片描述

10. 删除文档数据

10.1 删除单个文档数据

语法格式:

DELETE 索引名/类型名/文档id

如删除索引名为deviceinfo类型名为netinfo文档id为1的数据

DELETE deviceinfo/netinfo/1

10.2 删除某索引下的所有文档

POST deviceinfo/_delete_by_query
{
	"query":{
		"match_all":{}
	}
}

11. 批量操作bulk

11.1 批量删除

语法格式:

POST /索引名/类型名/_bulk
{"delete":{"_index":"索引名","_type":"类型名","_id":"文档id"}}

POST /deviceinfo/netinfo/_bulk
{"delete":{"_index":"deviceinfo","_type":"netinfo","_id":"1"}}

11.2 批量新增(需要有请求体)

语法格式:

POST /索引名/类型名/_bulk
{"create":{"_index":"索引名","_type":"类型名","_id":"文档id1"}}
{"字段名":"字段值"}
{"create":{"_index":"索引名","_type":"类型名","_id":"文档id2"}}
{"字段名":"字段值"}

或者

POST /索引名/类型名/_bulk
{"index":{}}
{"字段名1":"字段值1","字段名2":"字段值2"}
{"index":{}}
{"字段名3":"字段值3","字段名4":"字段值4"}

POST /deviceinfo/netinfo/_bulk
{"create":{"_index":"deviceinfo","_type":"netinfo","_id":"1"}}
{"net_name":"http1001"}

11.3 批量索引(需要有请求体)

语法格式:

POST /索引名/类型名/_bulk
{"index":{"_index":"索引名","_type":"类型名"}}
{"字段名":"字段值"}

注:没有指定id系统会自动生成

POST /deviceinfo/netinfo/_bulk
{"index":{"_index":"deviceinfo","_type":"netinfo"}
{"net_name":"http1002"}

11.4 批量更新

语法格式:

POST /索引名/类型名/_bulk
{"update":{"_index":"索引名","_type":"类型名","_id":"文档id"}}
{"doc":{"字段名":"字段值"}}

POST /deviceinfo/netinfo/_bulk
{"update":{"_index":"deviceinfo","_type":"netinfo","_id":"1"}}
{"doc":{"net_name":"http1003"}}

注:更新时不能缺失_id,文档不存在更新会失败


感谢阅读,祝君暴富!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

异步线程池

1、初始化线程的 4 种方式 1)继承 Thread package com.search.thread;import java.util.concurrent.*;public class ThreadTest {public static void main(String[] args) throws ExecutionException, InterruptedException {System.out.println("main......…

怎样做好接口自动化测试?

今天介绍一下在接口自动化测试相关实践中总结到的一些经验。 接口自动化测试的目的 自动化测试的主要目的是用来回归测试的,当代码有变化时,有可能影响不应该变化的逻辑,这个时候为了确认这种情况,就需要进行回归测试。有时候回…

关于W5500网卡使用过程的部分问题记录

某个项目中用到了W5500这种自带网络协议栈的网卡芯片,由于该项目开发时间很紧,就临时网上买了一些模块拼凑到了一套系统,经过验证果真这种拼积木的方法只能用在学生实验开发中,真不能拿来做工程应用,硬件太不稳定很容易…

VMware添加Ubuntu虚拟机-Ubuntu系统的安装-物联网开发

一、前言 在物联网开发中,我们需要使用Linux系统或Ubuntu系统,最近我将会分享一些关于Ubuntu系统的知识和指令,并归纳到我的Ubuntu系统开发与维护专题,希望能给大家在物联网开发中提供帮助。 本文我们讲述使用VMware 16 Pro添加Ub…

给cmd控制台程序 套壳 美化

给cmd控制台程序套壳美化,可以获取程序的标准输出和报错信息。 # _*_ coding: utf-8 _*_ """ 控制台程序启动器,杜绝黑窗口。 Time: 2023/10/18 15:28 Author: Jyun Version: V 0.1 File: main.py Blog: https://ctrlcv.…

计算机缺失pasmutility.dll怎么办,三步解决pasmutility.dll缺失

pasmutility.dll文件是windows系统中重要的dll文件,电脑一旦缺失dll文件就会导致电脑无法正常运行,同时还会唐初电脑缺失pasmutility.dll文件的提示窗口,非常影响电脑运行,那么出现计算机缺失pasmutility.dll该怎么办呢&#xff1…

为什么引入SVG文件,给它定义属性不生效原理分析

背景&#xff1a; 我使用antd 的Icon组件引入SVG图片&#xff0c;但给svg图片定义styles样式时&#xff0c;不生效&#xff0c;为什么呢&#xff1f; 我们平时用antd组件库的 < ArrowRightOutlined style{{color: red }}>时为什么会生效呢&#xff0c;但我图一这样定义就…

保护隐私就是在保护自己!如何在Android上更改应用程序权限

如果你关心隐私&#xff0c;知道如何在Android上更改应用程序权限将成为一项非常重要的技能。即使是最好的安卓应用程序也可以对手机的功能和数据进行广泛的访问&#xff0c;因此准确控制它们的使用范围会有所帮助。 一旦你在手机上加载了应用程序&#xff0c;你可能会注意到它…

Unity中Shader的Pass的复用

文章目录 前言一、怎么实现Pass的复用1、给需要引用的Pass给定特定的名字2、在需要引用 Pass 的Shader中&#xff0c;在Pass的平行位置使用 UsePass "ShaderPath PassName" 二、实现一个没被遮挡的部分显示模型原本的样子&#xff0c;遮挡部分显示模型的XRay效果1、…

一篇文章带你搞懂 单调栈 是怎么回事

首先我们要搞懂什么时候使用单调栈&#xff1f; 当我们需要找到 左边或右边 第一个 比自己大的数 或者 比自己小的数 时就要使用单调栈 单调栈实际上就是一个栈&#xff0c;他的作用就是存储我们遍历过的数字。当我们遍历数组的时候&#xff0c;遍历到后面的数组后并不知道前…

ARM 堆栈寻址类型区分

文章目录 堆栈指向分类堆栈指向数据分类满递增与满递减空递增与空递减 堆栈指向分类 根据堆栈指针的指向的方向不同&#xff0c;可以划分为向上生成型和向下生成型。 向上生成型&#xff1a; 随着数据的入栈&#xff0c;堆栈的指针逐渐增大&#xff0c;称为&#xff1a;递增…

数据结构中的七大排序(Java实现)

目录 一、直接插入排序 二、希尔排序 三、直接选择排序 四、堆排序 五、冒泡排序 六、快速排序 七、归并排序 一、直接插入排序 思想&#xff1a; 定义i下标之前的元素全部已经有序&#xff0c;遍历一遍要排序的数组&#xff0c;把i下标前的元素全部进行排序&#xff0…

Python 爬虫入门:常见工具介绍

接着我的上一篇文章《网页爬虫完全指南》&#xff0c;这篇文章将涵盖几乎所有的 Python 网页爬取工具。我们从最基本的开始讲起&#xff0c;逐步涉及到当前最前沿的技术&#xff0c;并且对它们的利弊进行分析。 当然&#xff0c;我们不能全面地介绍每个工具&#xff0c;但这篇…

C++string类重要函数模拟实现

为了和C标准库区分&#xff0c;以下代码除主函数外均在namespace空间 目录 一.成员 二、带参构造函数 三、拷贝构造函数和赋值运算符重载 四、析构函数 五、重要成员函数实现 1. c_str函数 2. operator[]重载 3. size函数和capacity函数 4.reverse函数 5. push_back和…

plink分析100个性状的批量gwas分析

大家好&#xff0c;我是邓飞。 GWAS分析时&#xff0c;3~5个性状是正常操作&#xff0c;要分析100个性状呢&#xff0c;手动修改参数&#xff0c;工作量是够了&#xff0c;但是程序员的修养体现在哪里了&#xff1f;&#xff1f;&#xff1f; 如果还是按照每个性状一个文件夹…

Jetpack:012-Jetpack中的弹出菜单

文章目录 1. 概念介绍2. 使用方法2.1 DropdownMenu2.2 DropdownMenuItem 3. 示例代码3.1 代码和注释3.2 代码难点3.3 运行效果 4. 内容总结 我们在上一章回中介绍了Jetpack中标题栏相关的内容&#xff0c;本章回中主要 弹出菜单。闲话休提&#xff0c;让我们一起Talk Android …

Appium+python+unittest搭建UI自动化框架!

阅读本小节&#xff0c;需要读者具备如下前提条件&#xff1a; 1. 掌握一种编程语言基础&#xff0c;如java、python等。 2. 掌握一种单元测试框架&#xff0c;如java语言的testng框架、python的unittest框架。 3. 掌握目前主流的UI测试框架&#xff0c;移动端APP测试框架Appiu…

智能化巡检系统哪家好?巡检系统可以为企业单位带来什么便利?

设备点检是设备维修策略中预防维修的一个重要手段。在很多单位内也得到了广泛的应用&#xff0c;但是实施效果均不太理想&#xff0c;弄虚作假的情况时常存在。尽管现在是人手一机的时代&#xff0c;但仍然有不少企业以纸笔抄录作为点检模式&#xff0c;这样就容易存在一系列的…

HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Slider

滑动条组件&#xff0c;通常用于快速调节设置值&#xff0c;如音量调节、亮度调节等应用场景。该组件从API Version 7开始支持。无子组件 一、接口 Slider(options?: {value?: number, min?: number, max?: number, step?: number, style?: SliderStyle, direction?: Ax…

如何确定IP地址的具体位置?

IP地址通过几种方法帮助确定具体位置&#xff0c;尽管它们的准确性和精度因不同的情况而异。以下是几种确定具体位置的主要方法&#xff1a; 地理IP数据库&#xff1a;这是最常用的方法之一&#xff0c;它使用IP地址和地理位置数据的映射来确定用户的位置。这些数据库存储了大量…