当前位置: 首页 > news >正文

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(页数):300
  • categories(类别):[“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

  • 用途:用于存储整型数据。适合需要存储整数类型的数据。
  • 应用场景:年龄、订单编号、库存数量等。

floatdouble

  • 用途:用于存储浮点数。float 用于单精度浮点数,double 用于双精度浮点数。
  • 应用场景:价格、评分、地理坐标等。

boolean

  • 用途:用于存储布尔值(truefalse)。
  • 应用场景:激活状态、是否管理员、是否完成等。

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 类型适合需要进行时间范围查询的字段,如创建时间、修改时间。

integerfloat 类型适合需要进行数值计算或比较的字段,如产品价格、库存数量、评分。

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 自调用递归

从前序与中序遍历序列构造二叉树 官方解析实在是记不住&#xff0c;翻别人的题解发现了一个有意思的写法 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智能体应用洞察半年报】&#xff1a; AI原生应用&#xff08;APP)一路高歌&#xff1b;豆包用户突破3000万&#xff1b;TOP10 APP以综合类应用为主。无论何种类型的AIGC APP都以智能体为“抓手”&#xff0c;专注于解决各种细分场景中的问题&am…...

Spring Boot-定时任务问题

Spring Boot 定时任务问题及其解决方案 1. 引言 在企业级应用中&#xff0c;定时任务是一项常见需求&#xff0c;通常用于自动化执行某些操作&#xff0c;如数据备份、日志清理、系统监控等。Spring Boot 提供了简洁易用的定时任务机制&#xff0c;允许开发者通过简单的配置来…...

从混乱到清晰!借助Kimi掌握螺旋型论文结构的秘诀!

AIPaperGPT&#xff0c;论文写作神器~ https://www.aipapergpt.com/ 写学术论文有时会让人感到头疼&#xff0c;特别是在组织结构和理清思路时&#xff0c;往往觉得无从下手。 其实&#xff0c;找到合适的结构不仅能帮你清晰地表达研究成果&#xff0c;还能让你的论文更有说…...

中国电子学会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翻页电子版和印刷版同时拥有是一种什么体验

​在数字化时代&#xff0c;样本册3D翻页电子版的兴起&#xff0c;让传统印刷版样本册面临着前所未有的挑战。与此同时&#xff0c;许多企业也开始尝试将两者相结合&#xff0c;以满足更多元化的市场需求。那么&#xff0c;拥有一份既具备数字化优势&#xff0c;又保留传统印刷…...

8586 括号匹配检验

### 思路 1. **初始化栈**&#xff1a;创建一个空栈用于存储左括号。 2. **遍历字符串**&#xff1a;逐个字符检查&#xff1a; - 如果是左括号&#xff08;( 或 [&#xff09;&#xff0c;则入栈。 - 如果是右括号&#xff08;) 或 ]&#xff09;&#xff0c;则检查栈是…...

案例精选 | 聚铭助力河北省某市公安局筑牢网络安全防护屏障

近年来&#xff0c;各级公安机关积极响应信息化发展趋势&#xff0c;致力于提升公安工作的效能与核心战斗力。河北省某市公安局作为主管全市公安工作的市政府部门&#xff0c;承担着打击违法犯罪、维护社会稳定的重任。随着信息化建设的推进&#xff0c;局内系统数量、种类及数…...

VBS学习2:问题解决(文件中含义中文运行报错或者中文乱码)

文件中含义中文运行报错或者中文乱码 问题 msgbox"fdsfdsf大蘇打撒旦dsfsdffsdfsd发斯蒂芬斯蒂芬"解决 文件编码修改成GB2312...

首次揭秘行业内幕!范罗士、希喂、有哈、小米、安德迈宠物空气净化器实测分析

前段时间有个朋友来我家做客&#xff0c;看到我家三只长毛猫&#xff0c;家里还是干干净净的&#xff0c;他家一只短毛猫都猫毛满天飞。也是很细心&#xff0c;留意到我家猫拉完粑粑后&#xff0c;我立刻就去把宠物空气净化器开上了&#xff0c;他一点味都没闻到。 回家后立刻…...

1267:【例9.11】01背包问题(信奥一本通)

题目链接&#xff1a;信息学奥赛一本通&#xff08;C版&#xff09;在线评测系统 (ssoier.cn) 今天刚看完卡尔大哥讲解的01背包&#xff0c;今天手敲了一遍&#xff0c;还是很多问题&#xff0c;只能说自己还是刷题太少或者说是没理解到位。 代码如下 # include <iostrea…...

信息化时代下的高标准农田灌区:变革与机遇并存

在信息化时代的浪潮中&#xff0c;高标准农田灌区的建设与管理正经历着前所未有的变革&#xff0c;这既是一个挑战重重的历程&#xff0c;也孕育着无限的发展机遇。随着物联网、大数据、云计算以及人工智能等先进技术的飞速发展与融合应用&#xff0c;传统的农田灌溉模式正在被…...

【系统架构设计师-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如何忽略部分路径

参考文章&#xff1a; Git - Ignore files during merge How to make git ignore a directory while merging 在进行git merge时&#xff0c;想忽略部分路径的回合。 如&#xff1a;将develop分支merge回master&#xff0c;但是忽略/path/to/folder路径 操作&#xff1a; gi…...

spring boot导入多个配置文件

1、简介 Spring Boot从2.4.x版本开始支持了导入文件的方式来加载配置参数&#xff0c;与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是一个开源的在线家谱管理系统&#xff0c;支持 GEDCOM 格式&#xff0c;允许用户协作管理家谱数据。它是免费的&#xff0c;并且功能强大。Webtrees有大量活跃用户参与的交流社区&#xff0c;在全世界约有6800个服务器。这是一个服务器应用&#xff0c;可以多…...

kafka消息发送几种方式

同步发送 or 异步发送 消息发送根据是否需要处理发送的结果分为同步发送、异步发送。 同步发送&#xff1a;等待发送结果返回&#xff0c;这种方式是可靠的&#xff0c;因为异常能及时处理&#xff0c;但同步发送需要阻塞等待一条消息发送完才处理下一条&#xff0c;吞吐量差。…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...