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等等)。欢迎关注。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

半导体器件制造5G智能工厂数字孪生物联平台,推进制造业数字化转型

半导体器件制造行业作为高科技领域的核心驱动力,正积极探索和实践以5G智能工厂数字孪生平台为核心的新型制造模式。这一创新不仅极大地提升了生产效率与质量,更为制造业的未来发展绘制了一幅智能化、网络化的宏伟蓝图。 在半导体器件制造5G智能工厂中&a…

解决selenium爬虫被浏览器检测问题

文章目录 专栏导读1.问题解析2.代码解析(Edge/Chrome通用)2.1 设置Edge浏览器选项:2.2 尝试启用后台模式2.3 排除启用自动化模式的标志2.4 禁用自动化扩展2.5 设置用户代理2.6 实例化浏览器驱动对象并应用配置2.7 在页面加载时执行JavaScript代码 3.完整代码(可直接…

ETHERCAT转PROFIENT网关—迅捷伺服驱动器数据交互

在当前的生产现场中,PLC 控制器与迅捷伺服驱动器之间通过通讯方式进行连接的情况愈发频繁。有些现场中,控制器和伺服驱动器采用统一的通讯协议,然而在另一些现场,会出现伺服驱动器 站使用不同协议的情况,这主要是由于不…

No operations allowed after statement closed

错误信息: The last packet successfully received from the server was 3,576,246 milliseconds ago. The last packet sent successfully to the server was 3,576,247 milliseconds ago. 参考解决方案 https://github.com/alibaba/druid/issues/5549 如果修改…

java(2)方法的使用

目录 1.前言 2.正文 2.1方法的定义 2.2方法的调用过程 2.3方法的实参与形参 2.3.1形参 2.3.2实参 2.3.3参数传递 2.4方法的重载 3.小结 1.前言 哈喽大家好啊,今天博主继续带领大家学习java的基本语法,java的基础语法部分打算用六到七篇博文完…

【天怡AI-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

论文内容分类与检测系统源码分享

论文内容分类与检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comput…

昇腾大模型推理解决方案MindIE部署

MindIE大模型推理套件 MindIE(Mind Inference Engine,昇腾推理引擎)是华为公司针对AI全场景推出的整体解决方案,包含丰富的推理加速套件。通过开放各层次AI能力,支撑客户多样化的AI业务需求,使能百模千态&a…

Kamailio-超强dispatcher负载均衡模块

Kamailio 负载均衡的功能主要依靠 Dispatcher 模块完成,模块官方文档参看 为什么要引入负载均衡?如何使用? 引入和配置功能路由调用命令行指令 为什么要引入负载均衡? Q: 如果单台VOIP服务的性能不能满足业务需求了&#xff0…

解决RabbitMQ设置TTL过期后不进入死信队列

解决RabbitMQ设置TTL过期后不进入死信队列 问题发现问题解决方法一:只监听死信队列,在死信队列里面处理业务逻辑方法二:改为自动确认模式 问题发现 最近再学习RabbitMQ过程中,看到关于死信队列内容: 来自队列的消息可…

秋招八股总结

transformer 损失函数 交叉熵的原理 公式 xi是true_label,yi是神经网络预测为正确的概率 对比学习loss 对比学习损失函数 InfoNEC Loss(bge中也用的这个) SimCSE的主要思想:同一句话通过不同的drop out作为正例&#xff0…

【计网】数据链路层:概述之位置|地位|链路|数据链路|帧

✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山岗! 💫 欢迎来到我的学习笔记! ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 1. 在OSI体系结构中的位置 1. 位置:数…

Parallels Desktop 20(Mac虚拟机) v20.0.0 for Mac 最新破解版(支持M系列)

Parallels Desktop 20 for Mac 正式发布,完全支持 macOS Sequoia 和 Windows 11 24H2,并且在企业版中引入了全新的管理门户。 据介绍,新版本针对 Windows、macOS 和 Linux 虚拟机进行了大量更新,最大的亮点是全新推出的 Parallels…

稳联Profinet转Canopen网关携手伺服,高效提升生产效率

在当今的工业生产领域,追求高效、精准和可靠的生产方式是企业不断努力的方向。稳联技术Profinet转Canopen(WL-ABC3033)网关与伺服系统的携手合作,为提高生产效率带来了新的机遇和突破。 实现无缝通信,优化生产流程稳联…

B站前端错误监控实践

前言 从23年开始,我们团队开始前端错误监控方向的开发。经历了一些列的迭代和发展,从监控SDK、上报、数据治理、看板集成、APM自研可视化初步完成了一条完整且适合B站前端监控。 截止目前(2024.08.01),前端监控在B站85%以上的业务线&#xf…

在基准测试和规划测试中选Flat还是Ramp-up?

Flat测试和Ramp-up测试是各有优势的,下面我们就通过介绍几种实用的性能测试策略来分析这两种加压策略的着重方向。 基准测试 基准测试是一种测量和评估软件性能指标的活动,通过基准测试建立一个已知的性能水平(称为基准线)&…

服务发现和代理实例的自动更新

☞ 返回总目录 1.服务发现的两种方式 StartFindService 方法 这是一个在后台启动的连续 “FindService” 活动,当服务实例的可用性发生变化时,会通过回调通知调用者。 它返回一个FindServiceHandle,可通过调用StopFindService来停止正在进行…

初学者蒙语学习,使用什么翻译软件学习更快?

为了加快蒙古语的学习,初学者应该从基础语法和词汇入手,利用语言学习应用进行系统学习,并通过音频和视频材料提高听力。语言交换和参加课程可以提供实践机会,而使用闪卡和文化沉浸有助于记忆词汇和理解语言背景。定期复习和设定学…

常用的k8s容器网络模式有哪些?

常用的k8s容器网络模式包括Bridge模式、Host模式、Overlay模式、Flannel模式、CNI(ContainerNetworkInterface)模式。K8s的容器网络模式多种多样,每种模式都有其特点和适用场景。Bridge模式适用于简单的容器通信场景;Host模式适用…

微服务保护之熔断降级

在微服务架构中,服务之间的调用是通过网络进行的,网络的不确定性和依赖服务的不可控性,可能导致某个服务出现异常或性能问题,进而引发整个系统的故障,这被称为 微服务雪崩。为了防止这种情况发生,常用的一些…