Elasticsearch入门用例

快速开始

使用版本:V7.12
资料来自官方文档

本指南幫助初學者學習如何:

將數據添加到 Elasticsearch
搜索和排序數據
在搜索過程中從非結構化內容中提取字段

测试运行:

http://localhost:9200
响应:

{"name": "DESKTOP-2A43T46","cluster_name": "elasticsearch","cluster_uuid": "z8ox4lqeTPWbcJs1gZNlyw","version": {"number": "7.12.0","build_flavor": "default","build_type": "zip","build_hash": "78722783c38caa25a70982b5b042074cde5d3b3a","build_date": "2021-03-18T06:17:15.410153305Z","build_snapshot": false,"lucene_version": "8.8.0","minimum_wire_compatibility_version": "6.8.0","minimum_index_compatibility_version": "6.0.0-beta1"},"tagline": "You Know, for Search"
}

添加數據

您可以將數據作為稱為文檔的 JSON 對象添加到 Elasticsearch。 Elasticsearch 將這些文檔存儲在可搜索索引中。

對於時間序列數據(例如日誌和指標),您通常將文檔添加到由多個自動生成的支持索引組成的數據流中。

數據流需要與其名稱相匹配的索引模板。 Elasticsearch 使用此模板來配置流的支持索引。 發送到數據流的文檔必須具有 @timestamp 字段。

添加單個文檔

提交以下索引請求以將單個日誌條目添加到logs-my_app-default數據流中。 由於logs-my_app-default不存在,請求會使用內置的logs-*-*索引模板自動創建它。

POST logs-my_app-default/_doc
{"@timestamp": "2099-05-06T16:21:15.000Z","event": {"original": "192.0.2.42 - - [06/May/2099:16:21:15 +0000] \"GET /images/bg.jpg HTTP/1.0\" 200 24736"}
}

響應包括 Elasticsearch 為文檔生成的元數據:

包含文檔的支持 _index。 Elasticsearch 自動生成支持索引的名稱。
索引中文檔的唯一 _id。

{"_index": ".ds-logs-my_app-default-2099-05-06-000001","_type": "_doc","_id": "gl5MJXMBMk1dGnErnBW8","_version": 1,"result": "created","_shards": {"total": 2,"successful": 1,"failed": 0},"_seq_no": 0,"_primary_term": 1
}

添加多個文檔

使用 _bulk 接口在一個請求中添加多個文檔。 批量數據必須是換行符分隔的 JSON (NDJSON)。 每行必須以換行符 (\n) 結尾,包括最後一行。

PUT logs-my_app-default/_bulk
{ "create": { } }
{ "@timestamp": "2099-05-07T16:24:32.000Z", "event": { "original": "192.0.2.242 - - [07/May/2020:16:24:32 -0500] \"GET /images/hm_nbg.jpg HTTP/1.0\" 304 0" } }
{ "create": { } }
{ "@timestamp": "2099-05-08T16:25:42.000Z", "event": { "original": "192.0.2.255 - - [08/May/2099:16:25:42 +0000] \"GET /favicon.ico HTTP/1.0\" 200 3638" } }

查询数据

索引文檔可近乎實時地搜索。 以下搜索匹配logs-my_app-default中的所有日誌條目,並按 @timestamp降序對它們進行排序。

GET logs-my_app-default/_search
{"query": {"match_all": { }},"sort": [{"@timestamp": "desc"}]
}

默認情況下,響應的命中部分最多包含與搜索匹配的前 10 個文檔。 每個命中的 _source 包含索引期間提交的原始 JSON 對象。

{"took": 2,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 3,"relation": "eq"},"max_score": null,"hits": [{"_index": ".ds-logs-my_app-default-2099-05-06-000001","_type": "_doc","_id": "PdjWongB9KPnaVm2IyaL","_score": null,"_source": {"@timestamp": "2099-05-08T16:25:42.000Z","event": {"original": "192.0.2.255 - - [08/May/2099:16:25:42 +0000] \"GET /favicon.ico HTTP/1.0\" 200 3638"}},"sort": [4081940742000]},...]}
}

指定获取特定字段

對於大型文檔來說,解析整個 _source 是很麻煩的。 要將其從響應中排除,請將 _source 參數設置為 false。 相反,請使用 fields 參數來檢索所需的字段。

GET logs-my_app-default/_search
{"query": {"match_all": { }},"fields": ["@timestamp"],"_source": false,"sort": [{"@timestamp": "desc"}]
}

響應包含每個命中的字段值作為平面數組。

{..."hits": {..."hits": [{"_index": ".ds-logs-my_app-default-2099-05-06-000001","_type": "_doc","_id": "PdjWongB9KPnaVm2IyaL","_score": null,"fields": {"@timestamp": ["2099-05-08T16:25:42.000Z"]},"sort": [4081940742000]},...]}
}

搜索日期範圍

要搜索特定時間或 IP 範圍,請使用 range 查詢。

GET logs-my_app-default/_search
{"query": {"range": {"@timestamp": {"gte": "2099-05-05","lt": "2099-05-08"}}},"fields": ["@timestamp"],"_source": false,"sort": [{"@timestamp": "desc"}]
}

您可以使用日期数字來定義相對時間範圍。 以下查詢搜索過去一天的數據,該數據不會與logs-my_app-default 中的任何日誌條目匹配。

GET logs-my_app-default/_search
{"query": {"range": {"@timestamp": {"gte": "now-1d/d","lt": "now/d"}}},"fields": ["@timestamp"],"_source": false,"sort": [{"@timestamp": "desc"}]
}

從非結構化內容中提取字段

您可以在搜索期間從非結構化內容(例如日誌消息)中提取運行時字段。

使用以下搜索從 event.original 中提取 source.ip 運行時字段。 要將其包含在響應中,請將 source.ip 添加到 fields 參數中。

GET logs-my_app-default/_search
{"runtime_mappings": {"source.ip": {"type": "ip","script": """String sourceip=grok('%{IPORHOST:sourceip} .*').extract(doc[ "event.original" ].value)?.sourceip;if (sourceip != null) emit(sourceip);"""}},"query": {"range": {"@timestamp": {"gte": "2099-05-05","lt": "2099-05-08"}}},"fields": ["@timestamp","source.ip"],"_source": false,"sort": [{"@timestamp": "desc"}]
}

合并查询

您可以使用 bool 查询来组合多个查询。 以下搜索结合了两种范围查询:一种针对 @timestamp,另一种针对 source.ip 运行时字段。

GET logs-my_app-default/_search
{"runtime_mappings": {"source.ip": {"type": "ip","script": """String sourceip=grok('%{IPORHOST:sourceip} .*').extract(doc[ "event.original" ].value)?.sourceip;if (sourceip != null) emit(sourceip);"""}},"query": {"bool": {"filter": [{"range": {"@timestamp": {"gte": "2099-05-05","lt": "2099-05-08"}}},{"range": {"source.ip": {"gte": "192.0.2.0","lte": "192.0.2.240"}}}]}},"fields": ["@timestamp","source.ip"],"_source": false,"sort": [{"@timestamp": "desc"}]
}

聚合数据

使用聚合将数据汇总为指标、统计数据或其他分析。

以下搜索使用聚合来使用 http.response.body.bytes 运行时字段来计算average_response_size。 聚合仅在与查询匹配的文档上运行。

GET logs-my_app-default/_search
{"runtime_mappings": {"http.response.body.bytes": {"type": "long","script": """String bytes=grok('%{COMMONAPACHELOG}').extract(doc[ "event.original" ].value)?.bytes;if (bytes != null) emit(Integer.parseInt(bytes));"""}},"aggs": {"average_response_size":{"avg": {"field": "http.response.body.bytes"}}},"query": {"bool": {"filter": [{"range": {"@timestamp": {"gte": "2099-05-05","lt": "2099-05-08"}}}]}},"fields": ["@timestamp","http.response.body.bytes"],"_source": false,"sort": [{"@timestamp": "desc"}]
}

响应的 aggregations 对象包含聚合结果。

{..."aggregations" : {"average_response_size" : {"value" : 12368.0}}
}

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

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

相关文章

CentOs 7利用iscaiadm工具发现并连接外接存储

CentOs 7利用iscaiadm工具发现并连接外接存储 1.1 使用iscsiadm发现存储 iscsiadm -m discovery -t st -p ${外接存储IP} # 执行结果may like ${外接存储IP}:3260,1 iqn.${存储唯一标识} 1.2 登入发现的存储 iscsiadm -m node -T iqn.${存储唯一标识} -p ${外接存储IP} -…

winform学习(3)-----Windows窗体应用和Windows窗体应用(.Net Framework)有啥区别?

1.模板选择 在学习winform的时候总是会对这两个应用不知道选择哪个?而且在学习的时候也没有具体的说明 首先说一下我是在添加控件的时候出现了以下问题 对于使用了Windows窗体应用这个模板的文件在工具箱中死活不见控件。 在转换使用了Windows窗体应用(.NET Fram…

Linux学习之一次性计划任务at

计划任务: 让计算机在指定的时间运行程序的任务 计划任务的分类: 1)一次性计划任务 2)周期性计划任务 先来讲讲一次性执行任务at。执行at 18:32报错-bash: at: command not found。 yum install -y at安装at。 at 18:32后边按下…

哈希表HashMap(基于vector和list)(答案)

答案如下 #include "HashMap.h" #include <algorithm> #include <iostream> #include <cassert> using namespace std;HashMap::HashMap(void) {reset();cout << "HashMap()" << endl; }HashMap::~HashMap(void) {cout <…

记录关于Reflect.get的困惑

目录 为什么p.bar不会无限循环&#xff1f;为什么这个p.bar又不会无限循环&#xff1f;结论 Reflect.get()的了解与学习&#xff0c;可以直接看Reflect.get() - JavaScript | MDN。 不过说实话&#xff0c;我在看完之后&#xff0c;仍然理解得不甚透彻。 那么你呢&#xff1f;…

Promise.reslove().then中return值对.then执行顺序的影响

return的类型 Promise.reslove().then(){}中的返回值的三种情况&#xff1a; 基本数据类型带then方法的对象Promise.reslove(4) Promise.reslove().then(){return 4;return {then: function (reslove){reslove(4)}}return Promise.reslove(4)}首先看以下代码的输出&#xff1…

【C++】二叉搜索树

二叉搜索树 前言正式开始模拟实现树节点以及树框架增中序遍历查找删除 递归实现增删查查插删 析构拷贝构造赋值重载时间复杂度分析应用场景两道题 前言 本来想先把搁置了一个月的Linux讲讲的&#xff0c;但是里面有些内容需要用到一些比较高级的数据结构&#xff0c;用C写的话…

【业务功能篇61】SpringBoot项目流水线 dependencyManagement 标签整改依赖包版本漏洞问题

业务场景&#xff1a;当前我们项目引入了公司自研的一些公共框架组件&#xff0c;比如SSO单点登录jar包&#xff0c;文件上传服务jar包等公共组件&#xff0c;开发新功能&#xff0c;本地验证好之后&#xff0c;部署流水线&#xff0c;报出一些jar包版本的整改漏洞问题&#xf…

rust usize与i64怎么比较大小?

在Rust中&#xff0c; usize 和 i64 是不同的整数类型&#xff0c;它们的位数和表示范围可能不同。因此&#xff0c;直接比较 usize 和 i64 是不允许的。如果需要比较它们的大小&#xff0c;可以将它们转换为相同的类型&#xff0c;然后进行比较。 要将 usize 转换为 i64 &…

MongoDB 操作命令

创建database 有就切换没有创建 useMydatabase 显示数据库&#xff1a;show dbs显示该database下的 bson对象 show collections 显示该bson下的具体内容**mydatabase.mycollection.find()**查询该bson对象内容**且查询****mydatabase.mycollection.find({a:,b:})****或查询****…

二叉树OJ(C)

文章目录 1.单值二叉树1.1法一&#xff1a;无返回值1.2法二&#xff1a;有返回值 2.相同的树3.对称二叉树4.二叉树的前序遍历5.二叉树的中序遍历6.二叉树的后序遍历7.另一棵树的子树8.二叉树遍历 1.单值二叉树 1.1法一&#xff1a;无返回值 struct TreeNode {int val;struct …

Virtualbox虚拟机中Ubuntu忘记密码

1、首先重新启动Ubuntu系统&#xff0c;鼠标快速点一下Virtualbox虚拟机窗口获取焦点&#xff0c;然后按住shift键&#xff0c;以调出grub启动菜单。 2、根据提示按下键盘E键进入编辑模式&#xff0c;向下移动光标&#xff0c;将如下"ro quiet splash $vt_handoff"部…

SpringBoot集成jasypt,加密yml配置文件

SpringBoot集成jasypt&#xff0c;加密yml配置文件 一、pom配置二、生成密文代码三、配置3.1、yml加密配置3.2、密文配置3.3、启动配置3.4、部署配置 四、遇到的一些坑 最新项目安全检测&#xff0c;发现配置文件中数据库密码&#xff0c;redis密码仍处理明文状态 一、pom配置…

一套AI+医疗模式的医院智慧导诊系统源码:springboot+redis+mybatis plus+mysql

一套AI医疗模式的医院智慧导诊系统源码 相关技术&#xff1a; 技术架构&#xff1a;springbootredismybatis plusmysqlRocketMQ 开发语言&#xff1a;java 开发工具&#xff1a;IDEA 前端框架&#xff1a;Uniapp 后端框架&#xff1a;springboot 数 据 库&#xff1a;mys…

【win11+vs 2017+OpenCV4.5.5+Qt5.12配置】解决了过程中遇到的小问题

0.版本选择 由于Qt5无法与最新的vs2022兼容&#xff0c;扩展工具中一直显示不可用&#xff0c;所以将vs降级成vs2017。 在安装Qt的过程中&#xff0c;会选择安装Qt套件&#xff0c;其中就的MCVS 2017&#xff0c;说明vs2017是与qt兼容的。 当然也可以用qt creator这一原生IDE。…

LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM 论文阅读

论文信息 题目&#xff1a;LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM 作者&#xff1a;Devendra Singh Chaplot, Dhiraj Gandhi 项目地址&#xff1a;https://devendrachaplot.github.io/projects/Neural-SLAM 代码地址&#xff1a;https://github.com/devendrachaplot/N…

[软件工程] 全局分析规格说明书模板

1 价值需求 描述目标系统的价值需求&#xff0c;可以附上商业模式画布。 1.1 利益相关者 描述目标系统的利益相关者&#xff0c;包括终端用户、企业组织、投资人等。 1.2 系统愿景 描述利益相关者共同达成一致的愿景&#xff0c;该愿景的描述需要对准企业的战略目标。 1.3 系统…

机器学习分布式框架ray运行pytorch实例

Ray是一个用于分布式计算的开源框架&#xff0c;它可以有效地实现并行化和分布式训练。下面是使用Ray来实现PyTorch的训练的概括性描述&#xff1a; 安装Ray&#xff1a;首先&#xff0c;需要在计算机上安装Ray。你可以通过pip或conda来安装Ray库。 准备数据&#xff1a;在使用…

ES6基础知识九:你是怎么理解ES6中Module的?使用场景?

一、介绍 模块&#xff0c;&#xff08;Module&#xff09;&#xff0c;是能够单独命名并独立地完成一定功能的程序语句的集合&#xff08;即程序代码和数据结构的集合体&#xff09;。 两个基本的特征&#xff1a;外部特征和内部特征 外部特征是指模块跟外部环境联系的接口…

Stable Diffusion AI绘画学习指南【插件安装设置】

插件安装的方式 可用列表方式安装&#xff0c;点开Extensions 选项卡&#xff0c;找到如下图&#xff0c;找到Available选项卡&#xff0c;点load from加载可用插件&#xff0c;在可用插件列表中找到要装的插件按install 按扭按装&#xff0c;安装完后(Apply and restart UI)应…