Elasticsearch 快速入门指南【总结记录】

news2024/11/17 13:49:45

本文将介绍一些基本概念,帮助您快速入门使用Elasticsearch。

一、概述

ES用来解决什么问题?Elasticsearch是解决海量数据(已经存在的数据)全文检索的不二只选。

Elasticsearch是一个基于Java语言开发,建立在开源搜索库Lucene之上的,天生支持分布式、可扩展、实时的搜索、聚合分析和存储引擎。它提供了强大的全文搜索功能和复杂的分析能力,适用于各种场景,包括应用日志分析、电子商务搜索、实时数据分析等。

二、认知

1、Lucene

Lucene封装好了各种建立倒排索、匹配索引进行搜索的各种算法。我们可以引入Lucene,基于它的API进行开发。

Elasticsearch就是在Lucene的基础上实现的,对Lucene进行了良好的封装,简化开发,并提供了很多高级功能。

2、ELK

ELK是Elasticsearch、Logstash和Kibana开源项目的首字母缩写。

ELK的应用场景:

  • 网站搜索、垂直搜索、代码搜索;
  • 日志管理与分析、安全指标监控、应用性能监控、web专区舆情分析 ;
3、Elastic Stack

Elastic Stack是ELK的更新换代产品,由于Logstash是重负载的任务,非常吃内存,消息处理在实战中面临很多问题(和web应用抢占资源等),因此后期引入了Beats,因为Beats是Go语言开发的,非常轻量,所以后期取代了Logstash的消息采集器(Beats只取代了Logstatsh中的一部分功能)。

  • Elasticsearch:Elasticsearch是一个搜索和分析引擎,是Elastic技术体系中最核心的成员;
  • Logstash:是一个服务端动态数据收集管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如ES等存储库中;
  • Kibana:提供了功能强大的图形化工具,可以让用户在Elasticsearch中使用图形和图表对比数据进行可视化;
  • Beats:轻量化数据采集器;
  • X-pack:商业化套件(收费),安全、告警、监控、图查询、机器学习。

Elasticsearch为快速检索和分析大数据而生,目前已形成丰富的生态。

在这里插入图片描述

三、入门

1、ES特点
  • 基于Java开发,基于Lucene框架(ES每一个分片都是一个完整的Lucene实例);
  • 原生支持分布式(Lucene不支持分布式,Solr需要借助Zookeeper来进行分布式集群管理);
  • 仅支持JSON数据格式,支持PB级数据量;
  • 开源、免费、跨语言、高性能、高可用、易扩展;
  • 开箱即用,上手简单,潜力巨大,可开发性强;
  • 不支持事务,写入实时性低,不能保证数据即时一致性。
2、ES目录
  • bin:可执行脚本文件,包括启动Elasticsearch服务、插件管理、函数命令等;
  • config:配置文件目录,如:Elasticsearch配置、角色配置、JVM配置等;
  • lib:Elasticsearch所依赖的Java库;
  • data:默认的数据存放目录,包含节点、分片、索引、文档的所有数据(生产环境要求必须修改到其它路径);
  • logs:默认的日志文件存放目录(生产环境同样要求必须修改到其它路径);
  • modules:包含所有的Elasticsearch模块,如Cluster、Discovery、Indices等;
  • plugins:已经安装插件的目录(新增插件可以直接存放到该目录,然后重启ES生效);
  • jdk/jdk app:7.0版本以后才有,自带的Java环境。
3、ES基本概念

1)ES分布式相关概念:

Elasticsearch本质上是一个分布式的数据库,允许多台服务器协同工作,每台服务器可以运行多个Elastic实例(生产环境建议每个节点都分别部署到不同的服务器上,防止某一台服务器宕机导致多个ES节点不可用),单个Elastic实例是一个节点,一组节点构成一个集群。

  • 节点(Node): 节点是Elasticsearch集群中的一个实例,它是数据存储和处理的基本单元。每个节点都有一个唯一的名称,并且具有自己的角色和职责。节点之间可以互相通信和协作,以实现数据的分布式存储和处理。

  • 集群(Cluster): 集群是由多个节点组成的Elasticsearch环境。节点通过互相通信和协调工作,共同构成一个集群。集群具有一个唯一的名称,并且可以包含数十甚至数千个节点,以实现高可用性和横向扩展。

2)ES单节点中的概念:

  • 索引(Index): 索引是Elasticsearch中存储和组织数据的基本单元,每个Index的名字必须是小写。用于存储和管理一组相关的文档。每个索引都有一个唯一的名称,并且可以包含多个类型(在Elasticsearch 7.x版本开始,一个索引只能包含一个类型)。

  • 类型(Type): 类型是在旧版本的Elasticsearch中引入的概念,用于将索引内的文档进行逻辑上的分组。每个类型都有一个名称,用于描述一组具有相似结构的文档。从Elasticsearch 7.x版本开始,一个索引只有一个固定的类型(即_doc)。

例如:weather这个Index里面,可以按城市分组(北京和上海),也可以按气候分组(晴天和雨天)。这种分组就叫做Type,它是虚拟的逻辑分组,用来过滤Document。

性质完全不同的数据(比如products和logs)应该存成两个 Index,而不是一个 Index 里面的两个 Type(虽然可以做到)。

  • 文档(Document): 文档是ES中的基本数据单元。用于表示一个具体的实体或对象,文档以JSON格式表示,可以包含各种字段和对应的值。每个文档都有一个唯一的ID,用于在索引中进行唯一标识,同一个Index里面的Doc不要求有相同的结构(schema),但是最好保持相同,这样有利于提高搜索效率。

  • 字段(Field):是用于表示和存储文档中特定数据的单元。每个文档都可以包含一个或多个字段,字段可以是不同的数据类型,如文本、数值、日期等。

  • 分片和副本(Shard & Replica): 为了实现数据的分布式存储和高可用性,ES将每个索引划分为多个分片(Shard)。每个分片都是一个独立的索引,包含部分数据。每个分片可以有多个副本(Replica),用于提供冗余和故障恢复。

类比数据库相关概念:

Elasticsearch名称概念数据库
Index索引
Type类型
Document文档
field字段

思考:ES中_type类比数据库中表的概念是否恰当?

最初,官方谈到索引类似于SQL数据库中的数据库的概念,类型相当于表。这是一个糟糕的类比,导致了错误的假设。在SQL数据库中,表是相互独立的。一个表中的列与另一个表中的同名列无关。对于_type中的字段,情况并非如此。

在 Elasticsearch 索引中,不同_type中具有相同名称的字段在内部由相同的Lucene字段支持。相同的索引中,不同的Type应该有相似的结构(schema),举例来说,id字段不能在这个Type是字符串类型,在另一个Type是数值类型(这是与关系型数据库的表的一个区别)。

思考:ES 7.x官方为什么要删除_type这个概念?

因为Elasticsearch设计初期,是直接查考了关系型数据库的设计模式,存在了 type(数据表)的概念。

但是,其搜索引擎是基于Lucene的,这种基因决定了type是多余的。 Lucene的全文检索功能之所以快,是因为倒序索引的存在。

而这种倒序索引的生成是基于index的,而并非type。多个type反而会减慢搜索的速度。

为了保持Elasticsearch “一切为了搜索” 的宗旨,适当的做些改变(去除 type)也是无可厚非的,也是值得的。

3)Query与Analysis:

  • 查询(Query): 查询是使用Elasticsearch进行搜索和过滤的一种方式。Elasticsearch提供了丰富的查询语言和API,可以进行全文搜索、精确匹配、范围过滤、聚合等操作。查询可以根据各种条件和参数来指定,并且可以根据相关性进行排序和评分。

  • 分析(Analysis): 分析是在将文本数据存储到Elasticsearch之前对其进行处理的过程。它包括分词、词干化、停用词过滤等步骤,以便更好地支持全文搜索和相关性排序。Elasticsearch提供了强大的分析器和标记器,可以根据不同的语言和需求进行配置。

四、应用

下面是常用数据库的对比图。

在这里插入图片描述

1、ES和MySQL的优劣势

1)Elasticsearch的优势:

  • 高性能:Elasticsearch是一个面向搜索和分析的分布式数据库,专注于快速的全文搜索和实时数据分析。它在处理大规模数据和高并发查询时表现出色,具有较高的性能。
  • 水平扩展性:Elasticsearch具有良好的可扩展性,可以轻松地进行水平扩展和集群部署。它可以处理大规模的数据集和高并发操作。
  • 弹性和容错性:Elasticsearch具有自动数据复制和故障恢复的机制,保证了数据的容错性和高可用性。

2)Elasticsearch的劣势:

  • 事务处理支持有限:Elasticsearch是一个面向搜索和分析的数据库,对于复杂的事务处理支持有限。它不支持跨多个文档的事务操作,因此在需要强一致性和事务性操作的场景下不是最佳选择。
  • 数据一致性延迟:由于Elasticsearch的分布式特性,数据的一致性可能需要一定的时间来保证。在进行数据复制和同步时,可能会出现短暂的数据一致性延迟。

3)MySQL的优势:

  • 事务处理支持:MySQL是一个成熟的关系型数据库,具有强大的事务处理支持。它支持ACID属性(原子性、一致性、隔离性和持久性),可以确保数据的一致性和完整性。
  • 数据一致性:MySQL在数据一致性方面相对可靠,可以提供较低的数据一致性延迟。
  • 关联查询支持:MySQL支持关系型数据模型和复杂的关联查询操作,适用于需要多表关联查询和复杂数据模型的应用。

4)MySQL的劣势:

  • 性能瓶颈:在处理大规模数据和高并发操作时,MySQL可能会遇到性能瓶颈,需要进行优化和调整。
  • 扩展性限制:相比于Elasticsearch,MySQL的扩展性相对较差。在需要处理大规模数据和高并发操作的场景下,可能需要进行复杂的分库分表操作。

综上所述,Elasticsearch适用于快速的全文搜索和实时数据分析,但在事务处理和数据一致性方面支持有限。MySQL则适用于事务处理和复杂的关联查询,但在处理大规模数据和高并发操作时可能会遇到性能瓶颈。根据具体的业务需求和数据特点,选择合适的数据库系统是很重要的。有时候,使用Elasticsearch和MySQL的组合可以更好地满足不同类型的需求。

2、ES使用场景

1)单独使用elasticsearch作为存储,一般适用于以下场景:

  • 全文搜索:Elasticsearch是一个强大的全文搜索引擎,适用于对大量文本数据进行快速和高效的搜索。如果应用程序主要关注全文搜索功能,并且需要快速地检索和分析文本数据,那么单独使用Elasticsearch作为存储是一个不错的选择。

  • 实时数据分析:Elasticsearch具备实时性能和高度可扩展性,适用于实时数据分析和可视化。它可以处理大规模的日志数据、事件数据等,支持聚合、分组和多维度分析等操作。如果应用程序需要实时地分析和可视化大量的数据,并且对性能和扩展性要求较高,那么单独使用Elasticsearch作为存储是一个合适的选择。

  • 日志管理:Elasticsearch被广泛应用于日志管理和分析领域。它可以接收和索引大量的日志数据,并提供强大的搜索和过滤功能,以便快速定位、检索和分析日志事件。如果应用程序需要对大量日志数据进行搜索、过滤和分析,并且需要快速定位和诊断问题,那么单独使用Elasticsearch作为存储是一个理想的选择。

  • 地理空间数据:Elasticsearch对地理空间数据的支持非常强大,可以进行地理位置的索引和搜索。它提供了丰富的地理位置查询功能,如距离计算、地理范围查询等。如果应用程序需要处理地理空间数据,并进行复杂的地理位置搜索和分析,那么单独使用Elasticsearch作为存储是一个合适的选择。

总而言之,单独使用Elasticsearch作为存储适用于那些需要强大的全文搜索、实时数据分析、日志管理和地理空间数据处理的应用场景。根据具体的需求和数据特点,选择合适的存储方案是很重要的。

2)与数据库集成(先写入数据库,再同步Elasticsearch),以下场景可以考虑与数据库进行集成:

  1. 与现有系统的集成
  2. 需要考虑事务性(ES天生不支持事务)
  3. 数据库更新频繁(数据库不能保证数据实时一致性)
3、指标分析/日志分析流程图

在这里插入图片描述

总结: 本文介绍了Elasticsearch的生态、常用数据库的对比以及如何与Mysql的整合,还介绍了一些Elasticsearch的基本概念,包括索引、文档、类型、节点、集群、分片和副本、查询以及分析。了解这些基本概念将有助于您更好地理解和使用Elasticsearch,从而构建高效的搜索和分析系统。对于更深入的学习和实践,建议参考官方文档和相关资源。

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

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

相关文章

代码随想录算法训练营第三天 | 203.移除链表元素、707.设计链表、206.反转链表

代码随想录算法训练营第三天 | 203.移除链表元素、707.设计链表、206.反转链表 文章目录 代码随想录算法训练营第三天 | 203.移除链表元素、707.设计链表、206.反转链表1 链表理论基础1.1 链表的定义1.2 链表的类型1.3 链表的存储方式1.4 链表的操作性能分析1.5 链表和数组的区…

电脑上不安装Oracle,但是虚拟机装了Oracle,怎么连接到虚拟机里的Oracle数据库呢?

1、准备工作 1.1、确定数据库版本信息 注:如果知道数据库的版本信息,这个步骤可以跳过。 比较简单的方法,直接看数据库的安装位置,也就是数字(但是这个方法确定就是,不好确定是多少位的数据库)…

高性能mysql 第三版 读书笔记

MySQL中的tmp_table_size和max_heap_table_size|极客笔记 mysql占用内存过高调优方法_tmp_table_size过大阻塞-CSDN博客 查看mysql分配的内存 mysql查看内存利用状态_mob6454cc6d81c9的技术博客_51CTO博客 https://www.cnblogs.com/stronger-xsw/p/13632505.html

企业信息化规划该如何落地?以制造型企业为例

企业信息化规划如何落地? 规划做好了,蓝图也画好了,人手一块大饼也已经揣好了,那么该怎么落地呢,这才是最关键的。 我将企业信息化规划落地分为4个周期,以最典型的制造行业为例,以简道云这个企…

JRT界面打开器

开发BS界面时候有个问题,如果新做页面还没挂菜单,那么测试新页面有两个办法,一是把菜单挂上用,一是手输URL。而我在开发阶段两个事都不想干,那么怎么解决呢? 以前WebLoader启动时候会启动C#写的URL辅助器 …

仓储|仓库管理水墨屏RFID电子标签2.4G基站CK-RTLS0501G功能说明与安装方式

随着全球智能制造进度的推进以及物流智能化管理水平的升级,行业亟需一种既能实现RFID批量读取、又能替代纸质标签在循环作业、供应链管理以及实现动态条码标签显示的产品。在此种行业需求背景下,我是适时推出了基于墨水屏显示技术的VT系列可视化超高频标…

Invalid bound statement(只有调用IService接口这一层会报错的)

问题描述:controller直接调用实现类可以,但是一旦调用IService这个接口这一层就报错. 找遍了大家都说是xml没对应好,但是我确实都可以一路往下跳,真的对应好了.结果发现是 MapperScan写错了,如下才是对的. MapperScan的作用是不需要在mapper上一直写注解了,只要启动类上写好就放…

OpenCV-Python(32):SIFT算法

目标 学习SIFT 算法的概念学习在图像中查找SIFT关键点和描述符 原理及介绍 在前面两节我们学习了一些角点检测技术:比如Harris 等。它们具有旋转不变特性,即使图片发生了旋转,我们也能找到同样的角点。很明显即使图像发生旋转之后角点还是角…

基于SkyEye仿真6678处理器:实现国产操作系统ReWorks仿真运行

信号处理的数据量以及实时性的要求随着嵌入式技术的发展不断提高,众多厂商和研究所选择多核DSP处理器芯片去替代原有的单核DSP,并运行嵌入式操作系统来保证信号处理的实时性以及精确性。然而受到硬件资源或者项目实施周期限制,软件工程师调试…

JS实现网页轮播图

轮播图也称为焦点图,是网页中比较常见的网页特效。 1、页面基本结构: 大盒子focus,里面包含 左右按钮ul 包含很多个li (每个li里面包含了图片)下面有很多个小圆圈 因为我们想要点击按钮,轮播图左右播放&a…

“消费新纪元:从传统消费到消费增值的跨越!“

你是否已经厌倦了传统消费模式,感觉每一次购物只是让钱从左手流到右手?现在,一个新的消费模式正在兴起,它让你的消费变得更有价值! 消费增值是一种创新的消费理念,它让你在享受优质商品和服务的同时&#x…

学生公寓里如何进行安全用电管理

安科瑞武陈燕acrelcy 学校肩负着教育、科研和社会服务的重任,是构成社会的重要社区,也是资源能源消费的大户,其中学生公寓电能的消耗占到了学校整体能源消耗的很大部分,根据国家建设节约型校园的要求,各高校对电能的管…

2023年全国职业院校技能大赛软件测试赛题—单元测试卷①

单元测试 一、任务要求 题目1:根据下列流程图编写程序实现相应分析处理并显示结果。返回文字“xa*a*b的值:”和x的值;返回文字“xa-b的值:”和x的值;返回文字“xab的值:”和x的值。其中变量a、b均须为整型…

Oracle 19c OCP 1z0 082考场真题解析第32题

考试科目:1Z0-083 考试题量:85 通过分数:57% 考试时间:150min本文为云贝教育郭一军(微信:guoyJoe)原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎…

在 Nvidia Docker 容器编译构建显存优化加速组件 xFormers

本篇文章,聊聊如何在新版本 PyTorch 和 CUDA 容器环境中完成 xFormers 的编译构建。 让你的模型应用能够跑的更快。 写在前面 xFormers 是 FaceBook Research (Meta)开源的使用率非常高的 Transformers 加速选型,当我们使用大模…

可以打印试卷的软件有哪些?推荐这几款

可以打印试卷的软件有哪些?随着科技的飞速发展,越来越多的学习工具如雨后春笋般涌现,其中,能够打印试卷的软件尤其受到广大学生和家长的青睐。这些软件不仅方便快捷,而且内容丰富,可以满足不同学科、不同年…

从零学Java Set集合

Java Set集合 文章目录 Java Set集合1 Set 集合2 Set实现类2.1 HashSet【重点】2.2 LinkedHashSet2.3 TreeSet 3 Comparator 自定义比较器 1 Set 集合 特点:无序无下标、元素不可重复。 方法:全部继承自Collection中的方法。 常用方法: publ…

windos exe 以服务的形式运行(开机运行)

windos 品台编写的 小工具 exe 或者 批处理 .bat 经常需要开机自启动,可以直接把它 加在开启启动项,或者做成 windos服务,这样既可以开机自动启动而且还可以 防止误触关闭掉; windos 以服务启动 exe/bat 的通用方式&#xff1…

js逆向第18例:猿人学第15题备周则意怠-常见则不疑

文章目录 一、前言二、定位关键参数三、代码实现四、参考文献一、前言 任务十五:抓取这5页的数字,计算加和并提交结果 二、定位关键参数 先找到数据接口 可以看到接口的url地址中存在变量m如下 进入堆栈,定位m值 如下图逻辑很清晰,可以看到window.

ChatGPT到底能做什么呢?

1、熟练掌握ChatGPT提示词技巧及各种应用方法,并成为工作中的助手。 2、通过案例掌握ChatGPT撰写、修改论文及工作报告,提供写作能力及优化工作 3、熟练掌握ChatGPT融合相关插件的应用,完成数据分析、编程以及深度学习等相关科研项目。 4、…