(一)ElasticSearch认识及安装

一、认识ES

Elasticsearch 是一个基于 Lucene 库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有 HTTP Web 接口和无模式 JSON 文档。Elasticsearch 是用 Java 开发的,并在 SSPL+Elastic License 许可证下作为开源软件发布。官方客户端在 Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby 和许多其他语言中都是可用的。

(一).基本特点

  1. ES是分布式的,ES也可以单点运行,多节点运行。作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可以运行在单机上服务小公司。数据通过分片算法散列在不同的节点上,从而实现高可用,负载均衡、分布式的搜索服务。
  2. ES实现全文检索,Mysql之所以使用比较慢,通过标题,内容字段去匹配。Elasticsearch作为传统数据库的一个补充,提供了数据库所不能提供的很多功能。
  3. ES实时快速
  4. ES对外暴露Restful接口。相较于lucene,对程序员更友好些。对用户而言,是开箱即用的,非常简单,作为中小型的应用,直接3分钟部署一下ES,就可以作为生产环境的系统来使用了,数据量不大,操作不是太复杂。

(二).与lucene对比

1.lucene

Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。

使用过程大概如下:

  • 索引流程:即采集数据–>构建文档对象–>分析文档(分词)–>创建索引。
  • 搜索流程:即用户通过搜索界面–>创建查询–>执行搜索,搜索器从索引库搜索–>渲染搜索结果。

2. ES

Elasticsearch是一个基于Apache Lucene™的开源搜索引擎。

Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

Lucene是一套信息检索工具包,并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工具、排序等功能,因此在使用Lucene时仍需要关注搜索引擎系统,例如数据获取、解析、分词等方面的东西。而elasticsearch都是基于该工具包做的一些封装。

(三).ES功能

Elasticsearch不是什么新技术,主要是将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES。

(1)分布式的搜索引擎和数据分析引擎

搜索:百度,网站的站内搜索,IT系统的检索
数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些;新闻网站,最近1个月访问量排名前3的新闻版块是哪些

分布式,搜索,数据分析

(2)全文检索,结构化检索,数据分析

全文检索:我想搜索商品名称包含牙膏的商品,select * from products where product_name like "%牙膏%"
结构化检索:我想搜索商品分类为日化用品的商品都有哪些,select * from products where category_id='日化用品'

部分匹配、自动完成、搜索纠错、搜索推荐
数据分析:我们分析每一个商品分类下有多少个商品,select category_id,count(*) from products group by category_id

(3)对海量数据进行近实时的处理

分布式:ES自动可以将海量数据分散到多台服务器上去存储和检索
海量数据的处理:分布式以后,就可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的处理。

近实时:检索个数据要花费1小时(这就不要近实时,离线批处理,batch-processing);在秒级别对数据进行

搜索和分析,跟分布式/海量数据相反的:lucene,单机应用,只能在单台服务器上使用,最多只能处理单台服务器可以处理的数据量。

(四).当前应用

在这里插入图片描述

二、适用场景

1.构建企业级搜索服务,比如电商系统,知识系统,日志分析等等

2,当你需要在大量数据之上,用到搜索分析的情况下,可以首先考虑下。

3.Elasticsearch具有广泛的应用场景,包括全文搜索、日志分析、运维监控、安全分析等。

三、ES VS Mysql

 ES 6.x版本推荐在一个index中尽量保持一个type。

 四、ES安装与部署

ES是java源实现的,需要保障服务器有java运行环境。我当前使用的是Es8.4.1,ES依赖JDK,7以上的版本中会自带jdk。我们从下载的安装包里也能看到这点。

 官网链接:免费且开放的搜索:Elasticsearch、ELK 和 Kibana 的开发者 | Elastic

 解压后,点击bat启动ES。

 但是,我点击后,闪退了。

 这个问题不能理解,andriodSDK删除了,还是报这个错,我干脆把ES版本降到7.17.6

换版本后,再次遇到问题了。

SecurityNetty4HttpServerTransport] [DESKTOP-0QU7RUU] received plaintext http traffic on an https channel, closing connection Netty4HttpChannel{localAddress=/127.0.0.1:9200

这个解决后,访问:http://localhost:9200/

需要注意的是,ES8版本都需要输入用户名和密码。用户名是elastic,密码可以去启动日志中找到。我当前是7所以没有输密码的步骤。

能访问,说明启动成功。


为了方便学习ES,还可以安装postman,kibana工具。

postman:做开发的都知道接口测试工具

kibana:它是elk技术中的一员。可以轻松地来执行高级的数据分析,可以用丰富的图表对查询结果可视化演示。

下面主要说安装kibana:

下载地址:Download Kibana Free | Get Started Now | Elastic

 需要下载与ES版本一致的kibana,至少大版本一致。

需要注意的是,再启动kibana前,一定要先启动ES。

kibana访问地址:

猜你喜欢

转载自blog.csdn.net/heni6560/article/details/126806586