一、ElasticSearch 入门概念

    ElasticSearch是一个开源的分布式、高度可扩展的搜索引擎,简单可以理解为类似百度、Google这样的搜索引擎产品。 它能够快速、近乎实时的存储、搜索和分析大量数据。

一、Elasticsearch适应于哪些场景

  • 电商搜索引擎: 许多电商平台使用Elasticsearch作为其搜索引擎,以提供实时、高性能的商品搜索和过滤功能。用户可以通过关键字搜索、过滤条件等快速找到所需的商品。

  • 日志和指标分析: Elasticsearch在处理大规模日志和指标数据方面表现出色。许多组织使用它来存储、搜索和分析应用程序生成的日志,以便监控系统健康、进行故障排除和实现安全分析。

  • 全文搜索和内容管理: 新闻网站、博客平台和内容管理系统使用Elasticsearch来提供全文搜索功能。它能够支持复杂的搜索查询,帮助用户轻松找到所需的文章或内容。

  • 地理空间数据分析: 地理信息系统(GIS)和位置数据分析是Elasticsearch的另一个常见应用。它能够索引和搜索地理坐标,并支持地理空间查询,用于地图应用、位置分析和地理数据可视化。

  • 企业级搜索和知识管理: 在企业内部,Elasticsearch被用于构建内部搜索引擎,帮助员工快速查找企业内的文档、数据和知识库。这有助于提高员工的工作效率和信息获取速度。

  • 安全信息与事件管理(SIEM): 安全行业使用Elasticsearch来构建SIEM系统,用于收集、分析和可视化网络安全事件。这有助于及时检测和应对潜在的安全威胁。

  • 医疗信息系统: 在医疗领域,Elasticsearch被用于构建医疗信息系统,以实现对患者记录、医学文献和研究数据的高效搜索和分析。

二、Elastichsearch处理数据能力

 ES有非常强大的数据处理能力。处理数据可以达到TB及PB级。 2013年初GitHub抛弃了Solr,采取ElasticSearch来做搜索,使用ElasticSearch完成对20TB的数据搜索,包括13亿文件和1300 亿行代码。 ES是一个分布式搜索引擎,单集群节点可以扩展到几百到上千个,单个节点堆内存支持设置到30G(太大也会影响检索效率)。经过大厂的验证ES完全能满足大部分业务场景下的海量数据需求。

三、ES官方地址

大家下载最好去官网下载,避免出现安全问题,下面给出了官网下载地址和文档地址

7.10版本文档地址:What is Elasticsearch? | Elasticsearch Guide [7.10] | Elastic

ES及Kibana下载地址:Past Releases of Elastic Stack Software | Elastic

ES源码地址: https://github.com/elastic/elasticsearch

四、与关系型数据库对比概念上的区别

类型

MySql

ElasticSearch

ES与关系型数据库对比概念上的差异

逻辑隔离方式

Database

/

关系型数据库中可以在一个数据库实例中创建多个数据库,数据库之间互相隔离,不同库中的表可以重复,每个库可以单独设置账号权限。

在ES7++版本中没有与之对应的一层,所有的索引数据都在同一个ES实例下管理,一个索引在当前ES实例下唯一。

数据集合

Table

Index

一个数据库中可以有多个表,每个表是一类数据的集合,例如电商场景中商品表、订单表。在一个ES集群实例中也可以创建多个索引,每个索引是一类数据的集合,例如商品索引、订单索引。

关系型数据库中的每个字段需要提前创建好,在ES中支持存储数据时自动添加新字段到索引中。

数据记录

Row

Document

关系型数据库表中的每条数据一般称为行。

ES索引中的每条数据称为文档,查出来的数据为Json格式。

字段

Column

Field

关系型数据库表中的每个字段称为列,在ES中称为字段。不过日常交流数据库表中的列有时候也会说成字段。

结构定义

Schema

Mapping

关系型数据库描述一个表的结构一般会称为Schema或建表语句,格式为标准的DDL语句。在ES描述一个索引结构称为Mapping, 是一个JSON格式,Mapping中定义了该索引有多少个字段,每个字段的数据类型及索引类型、分词方式等。

索引方式

Index

Every Field is Index

关系型数据库中的索引需要明确指定,例如主键索引、唯一索引等,在ES中所有的字段默认都是索引字段。

查询语言

SQL

ES DSL / SQL

关系型数据库中使用标准的SQL语言进行增删改查,ES中有自己的查询语言,同时也支持使用SQL。

以下是创建一个名为Student的ES索引语法示例

 与数据库建表语句差异还是比较大的,但整体概念是比较类似

一、ElasticSearch 入门概念_第1张图片

五、ES中的分片与副本

  在关系型数据库中,进行分库分表操作成本比较高,且对研发人员要求技能较高。相比之下,Elasticsearch的门槛就比较低。ES天生为分布式搜索引擎设计,内置了集群搭建和分片设置策略,使得在ES中进行分布式操作更为轻松。

为了能够让Elasticsearch能提供更高的检索效率,需理解两个关键概念:分片(Shard)和副本(Replica)。它们对于集群的性能、可用性和扩展性至关重要。

  • 分片(Shard):
    • 定义: 分片是将索引数据拆分为更小的部分,每个部分就是一个分片。一个索引可以设置N个分片,也可以称为主分片。
    • 作用: 分片有助于实现横向扩展,使得索引的数据能够分布在集群的不同节点上,从而提高查询和写入的性能。主分片是原始的数据分片,负责处理所有写入和查询操作。主分片的数量在索引创建时定义,一旦创建后就不能更改。
  • 副本(Replica):
    • 定义: 每个主分片都可以有零个或多个副本。副本是主分片的Copy,用于提高系统的可用性和容错性。每个副本都是一个独立的分片,与主分片数据相同。
    • 作用: 副本分布在集群的不同节点上,确保即使某个主分片所在的节点发生故障,仍然可以从其它节点获取相同的数据。 ES会尽量让主分片与副本数据落在不同节点上,但基于集群实例数据及分片策略也有可能会落在同一个节点上。
    • 数量: 副本的数量在索引创建后是可以动态调整的。增加副本的数量可以提高系统的容错性和读取性能,但也会占用更多的存储空间。

在索引创建时,通过设置主分片数量和副本数量,可以定义数据在集群中的分布和复制策略。例如,一个索引可以有5个主分片和1个副本,这意味着总共有10个分片(5个主分片 + 5个副本),并且每个主分片都有一个副本。这样的设置可以使得索引数据分布在5个节点上,同时每个节点都有该索引的完整副本。

一、ElasticSearch 入门概念_第2张图片

六、ElasticSearch优点

除了全文检索高效查找外还有以下一些优点

  1. 分布式和横向扩展: Elasticsearch被设计为分布式系统,可以在多个节点上运行。通过添加更多的节点,集群可以横向扩展以处理大规模数据和高并发请求。相比关系型数据库来说,这块优势非常大。

  2. 高性能: Elasticsearch使用倒排索引等技术,使其在搜索和分析大数据集时表现出色。它能够快速地定位和检索文档,提供低延迟的查询结果。

  3. 多功能性: Elasticsearch不仅仅是一个搜索引擎,还支持聚合、过滤、地理空间搜索等高级功能。它可以用于构建复杂的分析和数据挖掘应用。

  4. 灵活的数据模型: Elasticsearch的数据模型是面向文档的,采用JSON格式。这意味着你可以存储各种形式的数据,而且可以动态映射字段,不需要预定义表结构。

  5. 易用性: Elasticsearch提供RESTful API,与多种编程语言兼容,这使得它易于集成到各种应用中。此外,它还有直观的Web界面(Kibana)用于监控和管理集群。

你可能感兴趣的:(中间件技术,elasticsearch,大数据,搜索引擎,系统架构,中间件)