08【分布式】技术-ElasticSreach

08【分布式】技术-ElasticSreach(P1)

本系列文章对围绕JavaWeb的分布式技术进行讨论



前言

Elasticsearch是一个基于Lucene的搜索引擎,它提供了一个分布式、多租户的全文搜索引擎,具有RESTful Web接口和基于JSON的查询语言。它被广泛用于企业级搜索、日志分析、应用程序性能监测等领域。Elasticsearch的主要特点包括:分布式、高可用、实时搜索、多租户、全文搜索、自动索引、自动分片、自动容错、支持多种数据类型等。它还提供了丰富的插件和API,可以轻松地与其他工具和技术集成

文字太多不想看,推荐您使用 图片精美纯享版

1. 概念简介

1.1 Lucene说明

被认为是迄今为止最先进、性能最好、功能最全的搜索引擎

Lucene只是一个库,想要直接使用它有一定的门槛,需要使用 Java 自行将其集成到自己的应用中,完成这一步的前提是充分了解检索算法的相关知识点,这对开发应用并不友好

1.2 ElasticSearch介绍

基于Apach Lucene™的开源搜索引擎

使用Java语言编写并使用Luncene 来创建索引并实现搜索功能,但它的目的是通过简单连贯的 RESTful API让全文搜索变得简单并隐藏Lucene的复杂性

ES 既可以作为Lucene的全文搜索,还提供

  • 分布式的实时文件存储,每个字段都被索引并可以被搜索
  • 实时分析的分布式搜素引擎
  • 可以扩展到上百台服务器,处理PB级别结构化和非结构化的数据
  • 以上功能可以集成到一台服务器,通过RESTful ,即可使用多种语言的请求方式与之交互。
  • 隐藏复杂的搜索引擎理论,通过灵活的配置,很少的学习成本、即可用于生产环境。
  • 随着业务的增加,ElasticSearch 支持 高级特性,且均是可配置的

1.3 使用ElasticSearch的原因

从关系型数据库的大数据量下搜索问题考虑

  • 为了弥补MySql 在数据库记录不断增多,查询速度变慢,对中文某户查询不起作用 以及 全文索引的缺陷。
  • 引入ES 作为当下最优秀的全文搜索引擎,弥补mysql 快速索引、中文检索的问题

1.4 使用场景

在这里插入图片描述

1.4.1 存储

  • ES 天然支持分布式,具备存储海量数据的能力,其搜索和数据分析的功能都建立在ES存储的海量数据至上。
  • 在数据量急剧增长的当下,ES集合爬虫等数据收集技术可以发挥巨大作用

1.4.2 搜索

  • 使用到排序索引,每个字段都被索引且可用于搜索,丰富的搜素API,海量数据近实时实现秒级响应

  • 为搜素引擎(全文检索、高亮、搜索推荐等)提供检索的能力

    • github 代码管理

    • 电商网站,检索商品

    • 日志数据分析,logstash 采集日志,ES 进行复杂的数据分析(ELK 技术: ES + logstash + kibana)

1.4.3 数据分析

  • 通过ES提供的大量的数据分析API和丰富的聚合能力,在海量数据上进行数据的分析和处理

    • 爬虫电商商品的数据量,通过ES分析数据在平台上的价格和用户购买趋势

2. 核心概述

2.1 专业术语

  • 接近实时(NRT):因为在海量数据的全文检索上表现优异,延迟基本在1秒内,所以称之为接近实时

  • 集群(cluster):被一个或多个节点组织起来的全部数据。一个集群有一个唯一的名字标识,默认为”elasticsearch“。 集群标识,是节点加入集群的依据。

  • 节点(node):集群种的一个服务器,它存储数据、参与集群的索引与搜索功能。节点的标识是一个随机的漫威世界角色名。是管理节点的依据。节点开启会自动加入到集群,并且当系统只有一个节点时,会自动创建默认集群”elasticsearch“,再把当前节点加入集群中运行

  • 索引(index):类似于数据库,是检索作用的主体对象

  • 类型(type):类似于表(ES 不建议使用类型,在后面的版本会去除)

  • 文档(document):相当于数据表中的一行数据

  • 分片和复制( shards & replicas):相当于关系型数据库中的分库分表;复制相当于 数据同步

  • 映射(Mapping):等价于mysql 数据表的结构 schema。区别在于ES 会自动创建映射结构,而mysql 必须先定义表结构后使用

2.2 ES和Mysql结构类比

Mysql Elastic Search 说明
Database Index 索引,在ES中类似于Mysql数据库,是检索作用的主体对象,一说对应Table
Table type 类型,相当于ES中的表,但随着版本更新,
type逐渐被淡化(7.0已经不支持通过 type 删除, 所以也说 index 对应 Table )
Row Docuemnt 文档,即表格中的数据,ES 中文档军事Json格式的
Column Field 字段,就是JOSN文档中的字段,类似表格中的列
Schema Mapping 映射,是ES中的约束记录,类似表中的结构
Index Everthing is indexed 在ES中所有的内容都当作索引来处理
SQL Query DSL DSL是ES提供的JSON风格的请求语句,用来操作elasticSearch,实现CRUD
Select * from table… GET http: // RESTful 风格的接口操作方式,get相当于表中的查询语句
update table set… PUT http: // RESTful 风格的接口操作方式,put相当于表中的更新语句

3. 安装及配置

3.1 下载安装

下载地址(最新8.0可能和稳定的jdk不匹配):Elasticsearch 7.6.1 | Elastic

安装方式:解压到指定文件夹即可

启动服务(双机 bat 亦可)

cd D:/Users/elasticsearch-7.6.1/bin
elasticsearch
</
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值