自学内容网 自学内容网

day02_ElasticSearch基础和SeaTunnel

day02_ElasticSearch基础和SeaTunnel

一、ElasticSearch基本介绍(了解)

Elaticsearch,简称为es, es是一个基于apache开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

1. 简单来说 Elasticsearch 是一个开源的分布式搜索引擎,专门用于快速存储、搜索和分析大量数据,就像是一个“超级智能的图书馆管理员”,能帮你从海量数据中迅速找到需要的信息。

2. 具体 Elasticsearch 是基于 Apache Lucene 构建的,支持全文检索结构化搜索数据分析。它的核心特点包括:

  • 分布式架构:数据可以分布在多个节点上,支持水平扩展,处理PB级数据
  • 实时性:数据几乎可以实时被检索和分析。
  • 灵活性:支持多种数据类型,如文本、数字、地理位置等。
  • 强大的查询能力:支持复杂的查询语句,包括全文搜索、模糊搜索、聚合分析等。

3. 实际生产场景

  • 电商平台中,用于实现商品的全文搜索推荐功能,帮助用户快速找到所需商品。
  • 日志分析中,用于收集和检索服务器日志,帮助运维人员快速定位问题。
  • 大数据分析中,用于实时分析用户行为数据,生成可视化报表

4. 总之 Elasticsearch 是一个功能强大的分布式搜索引擎,适用于需要快速检索和分析海量数据的场景,是大数据领域搜索引擎技术中的重要工具。

1、Elasticsearch应用方向

  • 1- 信息检索
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 企业内部系统搜索
    在这里插入图片描述

  • 数据分析引擎

    • Elasticsearch 聚合可以对数十亿行日志数据进行聚合分析,探索数据的趋势和规律

2、ElasticSearch特点

  • 1- 海量数据存储和处理
大型分布式集群(数百台规模服务器)
处理PB级数据
小公司也可以进行单机部署
  • 2- 开箱即用
简单易用, 操作非常简单
快速部署生产环境
  • 3- 作为传统数据库的补充
传统关系型数据库不擅长全文检索(MySQL自带的全文索引,与ES性能差距非常大)
传统关系型数据库无法支持搜索排名、海量数据存储、分析等功能
Elasticsearch可以作为传统关系数据库的补充,提供RDBMS无法提供的功能

3、发展历史

在这里插入图片描述

  • 2004年,发布第一个版本名为Compass的搜索引擎,创建搜索引擎的目的主要是为了搜索食谱
  • 2010年,发布第二个版本更名为Elasticsearch,基于Apache Lucene开发并开源
  • 2012年,创办Elasticsearch公司
  • 2015年,Elasticsearch公司更名为Elastic,是专门从事与Elasticsearch相关的商业服务,并衍生了Logstash和Kibana两个项目,填补了在数据采集、数据可视化的空白。于是,ELK就诞生了
  • 2015年,Elastic公司将开源项目Packetbeat整合到Elasticsearch技术栈中,并更名为Beats,它专门用于数据采集的轻量级组件,可以将网络日志、度量、审计等各种数据作为不同的源头发送到Logstash或者Elasticsearch
  • ELK不再包括Elastic公司所有的开源项目,ELK开始更名为Elastic Stack,将来还有更多的软件加入其中,包括数据采集、清洗、传输、存储、检索、分析、可视化等
  • 2018年,Elastic公司在纽交所挂牌上市
    在这里插入图片描述

二、安装ElasticSearch(操作)

1、安装ElasticSearch

项目提供的服务器已经完成安装工作, 如需手动安装可参考课件安装篇, 需要注意的是ES不支持root用户安装, 必须使用普通用户

问题: 解决单节点告警问题

由于当前ES为单节点, 在构建一个新的索引库的时候, 依然会产生多个分片和副本的情况(默认), 但是只有一个节点, 多余的副本就无法放置, ES会变为告警状态(黄色)。修改副本数量为1即可

curl -XPUT http://192.168.88.166:9200/_settings?pretty -d '{ "index": { "number_of_replicas": 0 } }' -H "Content-Type: application/json"

2、插件安装

2.1 浏览器安装可视化插件

启动ElasticSearh服务
1- 切换用户
su es

2- 进入目录
cd /home/es/elasticsearch-7.10.2/bin

3- 启动
elasticsearch -d

4- 验证
jps

在地址位置: 输入 http://up01:9200 点击连接即可看到以下内容
在这里插入图片描述

2.2 PyCharm安装Elasticsearch插件

  • 进入配置页面

  • 安装插件:搜索 ElasticSearch Query。千万不要安装错
    在这里插入图片描述

  • 配置连接
    在这里插入图片描述

在这里插入图片描述

三、ElasticSearch的使用(熟悉)

1、RESTful API

1. 简单来说 RESTful API 是一种基于 HTTP 协议的网络接口设计风格,就像是一个“标准化的对话规则”,让客户端和服务器能够高效、清晰地交换数据。

2. 具体 RESTful API 是遵循 REST(Representational State Transfer,表述性状态转移)原则设计的接口。它的核心特点包括:

  • 资源导向:将数据或服务抽象为资源,每个资源通过唯一的 URL 标识。
  • HTTP 方法:使用标准的 HTTP 方法(如 GETPOSTPUTDELETE)来操作资源。
  • 无状态性:每次请求都包含所有必要信息,服务器不会保存客户端的状态。
  • 统一接口:接口设计简洁一致,易于理解和使用。

3. 实际生产场景

  • Web 应用中,用于前后端分离架构,前端通过 RESTful API 与后端交互数据。
  • 移动应用中,用于客户端与服务器之间的数据通信,如获取用户信息、提交订单等。
  • 微服务架构中,用于不同服务之间的通信,实现服务解耦和灵活扩展。

4. 总之 RESTful API 是一种简洁、高效的接口设计风格,广泛应用于现代 Web 和移动开发中,是构建分布式系统前后端分离应用的重要工具。

先看REST是什么意思,英文Representational state transfer 表述性状态转移 其实就是对 资源 的表述性状态转移。
简单的说:RESTful是一种架构的规范与约束、原则,就是用URI表示资源,用HTTP方法(GET, POST, PUT, DELETE)表征对这些资源的操作

如:http://localhost:9200/test/a.txt表示资源,Get或Post对资源进行操作,当采用RestFul API向ES发送数据的时候,ES返回响应的是数据格式Json,包括在请求体中发送Json格式的字符串发给服务器,所以ES的数据发送和返回都是Json数据格式的。

例如 ES的发送请求:
put /test-index/_doc/1
{
    "name": "张三",
    "age": 18
}

RESTful API 要求前端以一种预定义的语法格式发送请求,那么服务端就只需要定义一个统一的响应接口

2、猎聘网职位搜索案例

Elasticsearch与数据库的类比:

关系型数据库(比如Mysql) 非关系型数据库(Elasticsearch)
数据库 Database
表 Table 索引 Index
数据行 Row 文档 Document
数据列 Column 字段 Field
约束 Schema 映射 Mapping

ES的字段数据类型:

  • es的类型
    • 基本数据类型
      • text | keywords => string
        • text是可以进行分词字符串类型
        • keywords不能进行分词字符串类型
      • long
      • float
      • date
      • binary
    • 地址位置相关的类型
      • geo_point、geo_shape
    • 分词器
      • 分词器是针对一段文本,进行词的拆分方式
    • 分词类型
      • standard analyse : 英文分词器,标准分词器
      • IK analyse:一种中文分词器
      • JieBa:另外一种分词器
  • 完整数据类型:
    • https://www.elastic.co/guide/en/elasticsearch/reference/7.10/mapping-types.html

在这里插入图片描述
在这里插入图片描述

3、ElasticSearch SQL

ES SQL特点

  • 本地集成
    • Elasticsearch SQL是专门为Elasticsearch构建的。每个SQL查询都根据底层存储对相关节点有效执行。
  • 没有额外的要求
    • 不依赖其他的硬件、进程、运行时库,Elasticsearch SQL可以直接运行在Elasticsearch集群上
  • 轻量且高效
    • 像SQL那样简洁、高效地完成查询

ES-SQL语法

  • 目前支持单表查询
SELECT select_expr [, ...]
[ FROM table_name ]
[ WHERE condition ]
[ GROUP BY grouping_element [, ...] ]
[ HAVING condition]
[ ORDER BY expression [ ASC | DESC ] [, ...] ]
[ LIMIT [ count ] ]
[ PIVOT ( aggregation_expr FOR column IN ( value [ [ AS ] alias ] [, ...] ) ) ]
  • es cli的官方指导文档:
    • https://www.elastic.co/guide/en/elasticsearch/reference/7.10/sql-cli.html
      • https://www.elastic.co/guide/en/elasticsearch/reference/7.10/sql-cli.html
        • https://www.elastic.co/guide/en/elasticsearch/reference/7.10/sql-syntax-show-tables.html
  • es sql简单操作
    • es-sql不适合做表关联查询
    • es-sql开源版支持的功能有限
    • 官方网站:https://www.elastic.co/guide/en/elasticsearch/reference/7.10/sql-syntax-select.html
  • es只适合单表,大宽表存储,类似于hbase、mongo
    在这里插入图片描述
上面错误的原因: ES目前不支持多表查询。

4、PySpark操作ElasticSearch数据(掌握)

集成官网链接:https://www.elastic.co/guide/en/elasticsearch/hadoop/7.10/spark.html

集成相关参数介绍:https://www.elastic.co/guide/en/elasticsearch/hadoop/7.10/configuration.html

4.1 PySpark读取ES数据

核心参数及其配置:

1- format: org.elasticsearch.spark.sql或者es
2- options
2.1- es.nodes: ES集群连接信息,例如up01:9200
2.2- es.resource: 操作的索引名称,例如my_index
2.3- es.read.field.exclude: 不读那些字段 (适用于: 不读较少字段的情况),例如'gender,job'  
2.4- es.read.field.include: 只读那些字段 (适用于: 读较少字段的情况),例如'id, birthday' 
2.5- es.mapping.date.rich: 在读取ES中date类型下的数据时候, 读取到Spark后, Spark会转换为timestamp类型, 但是实际需要还是日期的字符串类型, 此时将此参数设置false, 不允许其自动转换类型, 强制将date类型转换为字符串
  
3- load()

4.2 PySpark数据写入ES

核心参数及其配置:

1- format: org.elasticsearch.spark.sql或者es
2- mode
2.1- append: 追加,当数据已经存在,往已存在的数据后面追加内容
2.2- overwrite: 覆盖,当数据已经存在,先将旧数据全部清空,再添加新数据
2.3- ignore

原文地址:https://blog.csdn.net/weixin_74002941/article/details/145247814

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!