5分钟熟练上手ES的具体使用
5分钟上手ES的具体使用
相信有很多同学想要去学习elk时会使用docker等一些方式去下载相关程序,但提到真正去使用es的一系列操作时又会知之甚少。于是这一篇博客应运而生。
本文就以下载好elk/efk系统后应该如何去使用为例,介绍es的具体操作。
es关键字基本概念
索引(Index):类似于关系型数据库中的“数据库”,是数据存储的容器。
文档(Document):类似于关系型数据库中的“行”,是 JSON 格式的数据单位。
字段(Field):类似于“列”,每个文档由多个字段组成。
举个例子:
{"index": "library","document": {"id": 1,"title": "Elasticsearch Basics","author": "John Doe","published_date": "2024-01-01","pages": 300,"categories": ["Technology", "Databases"]}
}
说明:索引:library 是索引的名称。
文档:这条记录是一个书籍文档,文档 ID 为 1。
字段:
title(标题):“Elasticsearch Basics”author(作者):“John Doe”published_date(出版日期):“2024-01-01”pages(页数):300categories(类别):[“Technology”, “Databases”]
类似关系型数据库的对比
- Elasticsearch 索引 ≈ 数据库中的 数据库。
- Elasticsearch 文档 ≈ 数据库中的 行。
- Elasticsearch 字段 ≈ 数据库中的 列。
现在应该对es的基础结构有了大概的了解。
然后是如何去创建这些索引,文档,字段呢?
es封装好了很多的方法,可以直接使用api进行请求,非常方便。
常用的:
创建一个名为 `my_index` 的索引
curl -X PUT "localhost:9200/my_index"
(X的意思是指定HTTP请求的方法)如GET,POST,PUT,DELETE等
以下为了展示更清晰,使用kibana中携带的开发工具去展示教程:
展示es集群状态:
GET _cluster/health
返回示例值:
{"cluster_name": "elasticsearch","status": "green", // 集群状态,"green" 表示所有节点都正常"number_of_nodes": 3
}
创建索引
先以最基础的create来了解es的结构
创建一个新的索引 my_index,并定义它的字段。
title:Text类型 published_date:date类型,author:keyword类型。
PUT /my_index
{"mappings": {"properties": {"title": {"type": "text"},"published_date": {"type": "date"},"author": {"type": "keyword"}}}
}
mappings:映射是一个描述文档字段以及字段类型的定义。类似于关系型数据库中的“表结构”或“schema”,它告诉 Elasticsearch 每个字段是什么类型,应该如何处理和索引这些字段的数据。
properties:是 mappings 的子级,它定义了文档中每个字段的名称和类型。每个字段的类型决定了 Elasticsearch 如何存储、索引和查询该字段的数据。
既然讲到创建,那就将es中常用的数据类型和应用场景说一下
text:
- 用途:用于需要全文搜索的字段。
text类型的数据会被分析(分词),以便进行全文检索。 - 应用场景:文章标题、内容描述、评论等。
keyword:
- 用途:用于精确匹配的字段。
keyword类型的数据不会被分词,适合用于过滤、排序、聚合等操作。 - 应用场景:分类标签、用户 ID、国家代码等。
date:
- 用途:用于存储日期和时间类型的数据。Elasticsearch 可以对
date字段进行范围查询、排序和聚合操作。 - 应用场景:发布日期、创建时间、更新时间等。
integer:
- 用途:用于存储整型数据。适合需要存储整数类型的数据。
- 应用场景:年龄、订单编号、库存数量等。
float、double:
- 用途:用于存储浮点数。
float用于单精度浮点数,double用于双精度浮点数。 - 应用场景:价格、评分、地理坐标等。
boolean:
- 用途:用于存储布尔值(
true或false)。 - 应用场景:激活状态、是否管理员、是否完成等。
nested:
- 用途:用于存储嵌套对象。它允许存储结构化的对象数组,并且可以对每个对象中的字段进行独立查询。
- 应用场景:评论中的回复、订单中的商品列表等。
示例:
"comments": {"type": "nested","properties": {"user": { "type": "keyword" },"comment": { "type": "text" },"date": { "type": "date" }}
}
object:
-
用途:用于存储 JSON 对象。与
nested不同,object字段无法对嵌套对象进行独立查询,但更适合存储简单的对象数据。 -
应用场景:用户地址、配置参数等。
示例:
"address": {"type": "object","properties": {"street": { "type": "text" },"city": { "type": "keyword" }}
}
geo_point:
- 用途:用于存储地理坐标(经纬度)。可以进行地理位置相关的查询,如范围搜索和距离计算。
- 应用场景:地点、用户位置、商店位置等。
ip:
- 用途:用于存储 IP 地址(IPv4 和 IPv6)。适合用于记录和查询网络请求相关的数据。
- 应用场景:用户访问日志、服务器 IP 地址等。
比较常用的总结来说的话:
text类型适合需要进行全文搜索的字段,如博客内容、产品描述。
keyword类型适合需要精确匹配、聚合或排序的字段,如用户名、产品 ID、标签。
date类型适合需要进行时间范围查询的字段,如创建时间、修改时间。
integer和float类型适合需要进行数值计算或比较的字段,如产品价格、库存数量、评分。
nested类型适合存储并查询复杂的嵌套数组数据,如订单中的商品列表或评论的回复。
常见命令
创建索引 :PUT
我们再回到常见命令的学习:重新看一下创建索引的命令:
PUT /my_index
{"mappings": {"properties": {"title": {"type": "text"},"published_date": {"type": "date"},"author": {"type": "keyword"}}}
}
现在就知道为什么要选这几种类型了。
插入文档:POST
既然创建了索引,自然就要插入数据
POST /my_index/_doc/1
{"title": "Elasticsearch Basics","published_date": "2024-01-01","author": "John Doe"
}
我们发现es的命令基本都是json格式的,在以后开发时也要注意。
_doc就表示文档的意思,1:文档的 ID。
获取文档:GET
从指定索引中获取文档ID为1的文档:
GET /my_index/_doc/1
示例:
{"_index": "my_index","_id": "1","_source": {"title": "Elasticsearch Basics","published_date": "2024-01-01","author": "John Doe"}
}
更新文档: _update
POST /my_index/_update/1
{"doc": {"title": "Advanced Elasticsearch"}
}
(_update命令是局部更新,并不需要提供完整的文档)
删除文档:DELETE
删除ID为1的文档
DELETE /my_index/_doc/1
搜索文档:_search
GET /my_index/_search
{"query": {"match": {"title": "Elasticsearch"}}
}
返回示例:
{"hits": {"total": {"value": 1},"hits": [{"_source": {"title": "Elasticsearch Basics","published_date": "2024-01-01","author": "John Doe"}}]}
}
搜索参数中:match为全文搜索查询,title 字段中包含 “Elasticsearch” 的文档将会被返回。
批量操作:_bulk
该方式很高效
插入示例:
POST /_bulk
{ "index": { "_index": "my_index", "_id": "2" }}
{ "title": "Learning Elasticsearch", "published_date": "2023-01-01", "author": "Jane Doe" }
{ "index": { "_index": "my_index", "_id": "3" }}
{ "title": "Mastering Elasticsearch", "published_date": "2022-01-01", "author": "Jake Doe" }
==注意:==批量插入数据时,每个文档必须包含一行操作说明和一行数据。
聚合查询
统计索引中文档的作者数量:
GET /my_index/_search
{"size": 0,"aggs": {"authors": {"terms": {"field": "author.keyword"}}}
}
返回示例:
{"aggregations": {"authors": {"buckets": [{"key": "John Doe","doc_count": 1},{"key": "Jane Doe","doc_count": 1}]}}
}
注意:
aggregations(聚合):用于对数据进行统计、分组、分析。terms聚合:按字段值对文档进行分组。
本篇博客大致就这些内容,之后会讲解elk/efk系统对接主流系统的操作(.log,nginx,mysql等等)。欢迎关注。
相关文章:
5分钟熟练上手ES的具体使用
5分钟上手ES的具体使用 相信有很多同学想要去学习elk时会使用docker等一些方式去下载相关程序,但提到真正去使用es的一系列操作时又会知之甚少。于是这一篇博客应运而生。 本文就以下载好elk/efk系统后应该如何去使用为例,介绍es的具体操作。 es关键字…...
lambda 自调用递归
从前序与中序遍历序列构造二叉树 官方解析实在是记不住,翻别人的题解发现了一个有意思的写法 class Solution { public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {auto dfs [](auto&& dfs, auto&&…...
mac中git操作账号的删除
命令行玩的很溜的可以跳过 找到钥匙串访问 搜github、gitee就行了...
AI Agent的20个趋势洞察
结论整理自【QuestMobile2024 AI智能体应用洞察半年报】: AI原生应用(APP)一路高歌;豆包用户突破3000万;TOP10 APP以综合类应用为主。无论何种类型的AIGC APP都以智能体为“抓手”,专注于解决各种细分场景中的问题&am…...
Spring Boot-定时任务问题
Spring Boot 定时任务问题及其解决方案 1. 引言 在企业级应用中,定时任务是一项常见需求,通常用于自动化执行某些操作,如数据备份、日志清理、系统监控等。Spring Boot 提供了简洁易用的定时任务机制,允许开发者通过简单的配置来…...
从混乱到清晰!借助Kimi掌握螺旋型论文结构的秘诀!
AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 写学术论文有时会让人感到头疼,特别是在组织结构和理清思路时,往往觉得无从下手。 其实,找到合适的结构不仅能帮你清晰地表达研究成果,还能让你的论文更有说…...
中国电子学会202306青少年软件编程(Python)等级考试试卷(二级)真题
一、单选题(共25题,每题2分,共50分) 1、运行以下程序,如果通过键盘先后输入的数是1和3,输出的结果是?( ) a = int(input()) b = int(input()) if a < b:a = b print(a)A. 3 1 B. 1 3 C. 1 D. 3 2、运行以下程序,输出的结果是?( ) n = 10 s = 0 m = 1 while…...
样本册3D翻页电子版和印刷版同时拥有是一种什么体验
在数字化时代,样本册3D翻页电子版的兴起,让传统印刷版样本册面临着前所未有的挑战。与此同时,许多企业也开始尝试将两者相结合,以满足更多元化的市场需求。那么,拥有一份既具备数字化优势,又保留传统印刷…...
8586 括号匹配检验
### 思路 1. **初始化栈**:创建一个空栈用于存储左括号。 2. **遍历字符串**:逐个字符检查: - 如果是左括号(( 或 [),则入栈。 - 如果是右括号() 或 ]),则检查栈是…...
案例精选 | 聚铭助力河北省某市公安局筑牢网络安全防护屏障
近年来,各级公安机关积极响应信息化发展趋势,致力于提升公安工作的效能与核心战斗力。河北省某市公安局作为主管全市公安工作的市政府部门,承担着打击违法犯罪、维护社会稳定的重任。随着信息化建设的推进,局内系统数量、种类及数…...
VBS学习2:问题解决(文件中含义中文运行报错或者中文乱码)
文件中含义中文运行报错或者中文乱码 问题 msgbox"fdsfdsf大蘇打撒旦dsfsdffsdfsd发斯蒂芬斯蒂芬"解决 文件编码修改成GB2312...
首次揭秘行业内幕!范罗士、希喂、有哈、小米、安德迈宠物空气净化器实测分析
前段时间有个朋友来我家做客,看到我家三只长毛猫,家里还是干干净净的,他家一只短毛猫都猫毛满天飞。也是很细心,留意到我家猫拉完粑粑后,我立刻就去把宠物空气净化器开上了,他一点味都没闻到。 回家后立刻…...
1267:【例9.11】01背包问题(信奥一本通)
题目链接:信息学奥赛一本通(C版)在线评测系统 (ssoier.cn) 今天刚看完卡尔大哥讲解的01背包,今天手敲了一遍,还是很多问题,只能说自己还是刷题太少或者说是没理解到位。 代码如下 # include <iostrea…...
信息化时代下的高标准农田灌区:变革与机遇并存
在信息化时代的浪潮中,高标准农田灌区的建设与管理正经历着前所未有的变革,这既是一个挑战重重的历程,也孕育着无限的发展机遇。随着物联网、大数据、云计算以及人工智能等先进技术的飞速发展与融合应用,传统的农田灌溉模式正在被…...
【系统架构设计师-2013年真题】案例分析-答案及详解
更多内容请见: 备考系统架构设计师-核心总结索引 文章目录 【材料1】问题1问题2【材料2】问题1问题2问题3问题4【材料3】问题1问题2问题3【材料4】问题1问题2问题3【材料5】问题1问题2问题3【材料1】 阅读以下关于企业应用系统集成架构设计的说明,在答题纸上回答问题1和问题…...
git merge如何忽略部分路径
参考文章: Git - Ignore files during merge How to make git ignore a directory while merging 在进行git merge时,想忽略部分路径的回合。 如:将develop分支merge回master,但是忽略/path/to/folder路径 操作: gi…...
spring boot导入多个配置文件
1、简介 Spring Boot从2.4.x版本开始支持了导入文件的方式来加载配置参数,与spring.config.additional-location不同的是不用提前设置而且支持导入的文件类型相对来说要丰富很多。 我们只需要在application.properties/application.yml配置文件中通过spring.config.…...
硬件工程师笔试面试——无线通讯模块
目录 15、无线通讯模块 15.1 基础 无线通讯模块实物图 15.1.1 概念 15.1.2 常见的无线通讯模块及其特点 15.1.3 无线通讯模块参数 15.1.4 无线通讯模块工作原理 15.2 相关问题 15.2.1 如何根据项目需求选择合适的无线通讯模块? 15.2.2 无线通讯模块的安全性如何,如…...
开源PHP免费家谱应用Webtrees简介
1. 介绍 Webtrees是一个开源的在线家谱管理系统,支持 GEDCOM 格式,允许用户协作管理家谱数据。它是免费的,并且功能强大。Webtrees有大量活跃用户参与的交流社区,在全世界约有6800个服务器。这是一个服务器应用,可以多…...
kafka消息发送几种方式
同步发送 or 异步发送 消息发送根据是否需要处理发送的结果分为同步发送、异步发送。 同步发送:等待发送结果返回,这种方式是可靠的,因为异常能及时处理,但同步发送需要阻塞等待一条消息发送完才处理下一条,吞吐量差。…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
