版本:ElasticSearch7.x.x 相对于来说是目前最新的
ElasticSearch一下文中简称 Es
服务的开源地址:点我跳转
百科介绍:点我跳转
中文社区:点我跳转
讲哪些?
- 聊一个人
- Es概述
- Es相关安装
- 核心概念
- 分词器ik
- RestFult 操作 Es
- CRUD
- SpingBoot+京东爬虫采集数据+全文搜索
以后只要涉及到大数据,需要用到搜索,就可以使用Es!
1、聊一个人
Doug Cutting 是一位美国工程师,迷上了搜错引擎。他做了一个用于文本搜索的函数库,命名为Lucene. Lucene 是用java写的,目标是为各种中小型应用软件加入全文搜索功能。Lucene是一套信息检索工具包,并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工具、排序等功能。因此在使用Lucenen时仍需关注搜索引擎系统,例如数据获取、解析、分词等方面的东西。
该项目早期被发布在Doug Cutting的个人网站,后来成为了Apache软件基金会jakarta项目的一个子项目。后来在Lucene的基础上开发了一款可以代替当时的主流搜索的开源搜索引擎,命名为Nutch.
Nutch 是一个建立在Lucene核心之上的网页搜索应用程序,它在Lucene的基础上加了爬虫和一些网页相关的功能,目的就是从一个简单的站内检索推广到全球网络上的搜索上。
随着时间的推移,作为互联网搜索引擎,都面临对象“体积”不断增大的问题。需要存储大量的网页,并不断优化自己的搜索算法,提升搜索效率。
在2004年,Doug Cutting实现了分布式文件存储系统,并将它命名为NDFS(Nutch Distributed File System)。后来他加入了雅虎,将NDFS和MapReduce进行了改造,并重新命名为Hadoop(NDFS也改名为HDFS,Hadoop Distributed File System). 这就是大名鼎鼎的大数据框架系统–Hadoop的由来,而Doug Cutting则被人称为Hadoop之父。
2、Es概述
2004年,为了支持老婆成为大厨的梦想, 程序员Shay Banon从美国搬到了伦敦。
作为一名极客程序员,这时他失业在家,靠老婆工资生活。正好老婆需要找一个好的菜谱管理软件,这个任务自然落到了他头上。按照程序员选软件的标准,Shay评测了市场上的菜谱管理软件,没有一个让他满意。
于是Shay决定,亲手开发一个。他对菜谱管理软件的设想是:有一个搜索框,用户只需要输入一个关键字,就能在配方、文章、书籍、步骤、材料等等里,搜到对应的内容。Shay决定以Doug Cutting开发的搜索引擎Lucene为底层库,开发这个菜谱管理软件。
我们将单独写一篇关于传奇开源开发者Doug Cutting的故事。Doug Cutting是Hadoop、Nutch、Lucene的开发者,围绕这些开源软件,诞生了5家以上上市公司,还有数不清的创业公司。
这是Elastic的起源。Shay Banon写下菜谱管理软件第一行代码时,大概没想到,那款免费开源软件,会成为市值60亿美金的纽交所上市公司。
以下Elastic指公司,Elasticsearch指搜索引擎产品。
不过,也许是忙着开发Elasticsearch,Shay没能实现最初的目标。到现在,他老婆还等着他的菜谱管理软件…
更多了解,点我跳转
回到正题
Lucene 是一套信息检索工具包,不包含搜索引擎系统!
包含的:索引结构!读写索引的工具!排序,搜索规则工具类!
Lucene 和 Es 关系:
Es是基于 lucene 做了一些封装和增强(对于我们上手是十分简单)
谁在使用
- 维基百科,类似百度百科,全文检索,高亮,搜索推荐
- 国外新闻网站,类似搜狐新闻,用户行为日志(点击,浏览,收藏,评论)+社交网络数据,数据分析。。。
- Stack Overflow国外的程序异常讨论论坛
- GitHub(开源代码管理),搜索上千亿行代码
- 电商网站,检索商品(淘宝、京东、亚马逊)
- 日志数据分析,logstash采集日志,ES进行复杂的数据分析,ELK技术(elasticsearch+logstash+kibana)
- 商品价格监控网站
- 商业智能系统
- 站内搜索
ES和solr的差别
ElasticSearch简介
ElasticSearch是一个实施分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。它用于全文搜索、结构化搜索、分析以及将这三者混合使用:
维基百科使用es提供全文搜索并高亮关键字,以及输入实施搜索和搜索纠错等搜索建议功能;英国公报使用es结合用户日志和社交网络数据提供给他们的编辑以实施的反馈,以便了解龚总对新发表的文章的回应。。。
es是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好、功能最全的搜索引擎库。想要使用它,必须使用java来作为开发语言并将其直接继承到你的应用中。
solr简介
Solr是Apache下的一个顶级开源项目,采用java开发,是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展、并对索引、搜索性能进行了优化。它可以独立运行,是一个独立的企业及搜索应用服务器,它对外提供类似于web-service的API接口。用户可以通过http请求,像搜索引擎服务器提交一定格式的文件,生成索引;也可以通过提出查找请求,并得到返回结果。
两者比较
- 当单纯的对已有数据进行搜索时,Solr更快
- 当实时建立索引是,Solr会产生io阻塞,查询性能较差,ElasticSearch具有明显的优势
- 随着数据量的增加,Solr的搜索效率会变得更低,而Elasticsearch却没有明显的变化
总结
- es基本是开箱即用,非常简单。而solr会有点复杂。
- Solr利用Zookeeper进行分布式管理,而elasticsearch自身带有分布式协调管理功能
- solr支持更多格式的数据,比如json xml csv。而es只支持json文件格式
- solr官方提供的功能更多,而elasticsearch更注重核心功能,高级功能由第三方插件提供
- solr查询快,但更新索引时慢,用于电商等查询多的应用
- es建立索引宽,即实时性查询快,用于facebook新浪等搜索
- solr较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而elasticsearch相对开发维护者较少,更新太快,学习使用成本较高
3、Es相关安装
超详细安装教程:点我跳转
4、核心概念
文档教程地址:点我跳转
5、分词器ik
文档教程地址:点我跳转
6、RestFult 操作 Es
文档教程地址:点我跳转
7、CRUD
8、SpingBoot+京东爬虫采集数据+全文搜索
源码仓库地址:点我跳转