注意保存以下文件的时候编码格式一定要是UTF-8,否则会报错。
(一)、什么是ElasticSearch(库、表、记录)
只要学不死、就往死里学
1.ElasticSearch是什么
就好比如我们去百度搜索吉士先生.发现百度给我们罗列出来了所有的列表数据。在没有ElasticeSearch技术之前,我们需要使用的是SQL语句的Like特殊关键字,现在我们只需要使用ElasticeSearch技术即可。
在大数据的情况下我们使用模糊查询会效率变得会非常的慢。
ElasticSearch: 搜索!(百度、CSDN、淘宝、电商)。
2.ElasticSearch学习路线
- ElasticSearch背景
- 货比三家 (slor、search、loosens)
- 搭建与安装ElasticSearch
- 生态圈
- 分词器(ik)
- RestFul操作ElasticSearch
- CRUD
前期我们可以把
ElasticSearch看作成一个数据库
,ElasricSearch数据库中有索引
、文档
、文档记录
。对应的是:库、表、记录
- SpringBoot集成ElasticSearch
- 爬虫爬取数据!
- 模拟全文检索
学完之后,只要用到搜索我们就可以使用ElasticSearch技术。建议在大数据的情况下使用ElasticSearch技术
3.聊聊Doug Cutting
1998年9月4日,Google公司在美国成立。正如大家所知道的那样,它是一家做 搜索
引擎起家的公司。
随着大数据时代的来临,许多互联网公司面临着搜索引擎的问题。
2003年谷歌发表(Google File System)谷歌文件系统。这是谷歌共公司为了存储海量数据
而设计的专用文件系统,2004年Doug Cutting实现了分布式文件存储系统 Nutch。
2004年谷歌发表了(MapReduce编程模型),这个模型用于大规模数据集(1TB)的并行分析运算(搜索引擎)
。2005年,Dog Cutting又基于MapReduce,在Nutch搜索引擎实现了该功能
。
生存法则: 不断地学习(虚心学习)、雅虎经验、优胜劣汰。
Lucence 是一套信息检索工具包 、jar包、不包含搜索引擎系统。包含的是:
索引结构、读写索引的工具、排序功能、搜索规则 ... 工具类
。
4.Lucene 和 ElasticSearch的关系:
ElasticSearch 是基于Lucence
做了一些封装和增强(我们上手是十分简单的)
(二)、ElasticSearch概述
1.基本概述
ElasticSearch(简称es)是一个基于Lucene的搜索服务器
。它提供了一个分布式多用户能力的全文搜索引擎,可以几乎实现实时的存储、检索数据
;本身扩展性很好可以扩展到上百台服务器上,处理PB级别(大数据时代)
的数据。基于restful API
接口。ElasticSearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎
。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装
使用方便。构建在全文检索开源软件Lucene之上的ElasticSearch,不仅能对海量规模的数据完成分布式检索与检索,还能提供数据聚合分析
。
2.百度搜索关键字思考
目前百度也正在使用ElasticSearch技术,为什么百度能够全文检索
、关键字高亮
、搜索推荐(搜索结果排序-权重)
。
3.目前都有哪些公司在用ElasticSearch技术
- 维基百科、类似于百度百科
- The Guardan(国内新闻网站)、类似于搜狐新闻
- Stack Overflow(国外的程序异常讨论论坛)
- 日志数据分析,ELK技术:
elasticsearch+logstash+kibana
- 商品价格监控网站: 当商品低于某个价格的时候通知用户
- 电商(淘宝、京东)
(三)、ES和solr的差别
1.ElasticSearch 简介
ES是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。
它主要用于全文搜索
、结构搜索
、分析
以及将这三者混合使用。
Elasticsearch是一个基于Apache Lucene™的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进性能最好的、功能最全的搜索引擎库
。
但是,Lucene只是一个库。想要使用它,你必须使用ava来作为开发语言并将其直接集成到你的应用中,更糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
ES也是有Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的式通过简单的RestFul APi来隐藏Lucene的复杂性,从而让全文搜索变得更加简单
。
2.Slor 简介
Sor 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器
。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能
进行了优化
Solr可以独立运行
,运行在etty、Tomcat等这些Servlet容器中,Solr 索的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xm文档添加、删除、更新索引
。Solr 搜索只需要发送 HTTP GET 请求,然后对 Sol返Xml、json等格式的查询结果进行解析,组织页面布局。Sor不提供构建UI的功能,Sor提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况
。
solr是基于lucene开发企业级搜索服务器,实际上就是封装了lucene。
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的文件,生成索引;也可以通过提出查找请求,并得到返回结果。
3.ES与Slor的区别
背景:它们都是基于Lucene搜索服务器基础之上开发,一款优秀的,高性能的企业级搜索服务器。【是因为他们都是基于分词技术构建的倒排索引的方式进行查询】
开发语言:Java语言开发
诞生时间:Solr :2004年诞生。ES:2010年诞生。ES 更新【功能越强大】
区别:
- 当实时建立索引的时候,solr会产生io阻塞,而es则不会,
es查询性能要高于solr
。 - 在
不断动态添加数据
的时候,solr的检索效率会变的低下,而es则没有什么变化。 - Solr利用zookeeper进行分布式管理,而
es自身带有分布式系统管理功能(免部署)
。Solr一般都要部署到web服务器上,比如tomcat。启动tomcat的时候需要配置tomcat与solr的关联。【Solr 的本质 是一个动态web项目】 - Solr支持更多的格式数据[xml,json,csv等],而
es仅支持json文件格式
。 - Solr是传统搜索应用的有力解决方案,但是es更适用于新兴的实时搜索应用。
单纯的对已有数据进行检索的时候,solr效率更好,高于es
。 - Solr官网提供的功能更多,而es本身更注重于核心功能,高级功能多由第三方插件。
(四)、ElasticSearch安装与搭建
1.安装的基本要求
ES安装及head插件安装
声明:JDK 1.8以上,最低要求
!ElasticSearch 客户端。界面工具!
Java 开发,ElasticSearch的版本和我们之后对应的Java的核心jar包!版本对应
!JDK环境是正常!
2.下载与安装
官网:https://www.elastic.co/cn/elasticsearch/
我们要下载7.6.2版本
具有四个文件
ELK三件客,解压即用‘ 我用的都是 7.6.1的版本
3.window下安装
- 解压目录生成如下目录
bin 启动文件
config 配置文件
log4j2 日志配置文件
jvm,options java 虚拟机配置
elasticsearch.yml elasticsearch配置文件
默认端口: 9200
lib 相关jar包
modules 功能模块
plugins 插件!ik 分词器
jvm.options 配置文件查看默认运行内存
C:\Environment\elasticsearch-7.6.2-windows-x86_64\elasticsearch-7.6.2\config
elasticsearch.yml 默认端口
2. 启动
点击 elasticsearch.bat
3. 访问 localhost:9200