ElasticSearch7.x.x

版本:ElasticSearch7.x.x 相对于来说是目前最新的

ElasticSearch一下文中简称 Es

服务的开源地址:点我跳转

百科介绍:点我跳转

中文社区:点我跳转

讲哪些?

  1. 聊一个人
  2. Es概述
  3. Es相关安装
  4. 核心概念
  5. 分词器ik
  6. RestFult 操作 Es
  7. CRUD
  8. SpingBoot+京东爬虫采集数据+全文搜索

以后只要涉及到大数据,需要用到搜索,就可以使用Es!

1、聊一个人

Doug Cutting 是一位美国工程师,迷上了搜错引擎。他做了一个用于文本搜索的函数库,命名为Lucene. Lucene 是用java写的,目标是为各种中小型应用软件加入全文搜索功能。Lucene是一套信息检索工具包,并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工具、排序等功能。因此在使用Lucenen时仍需关注搜索引擎系统,例如数据获取、解析、分词等方面的东西。

Doug Cutting

该项目早期被发布在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 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却没有明显的变化

总结

  1. es基本是开箱即用,非常简单。而solr会有点复杂。
  2. Solr利用Zookeeper进行分布式管理,而elasticsearch自身带有分布式协调管理功能
  3. solr支持更多格式的数据,比如json xml csv。而es只支持json文件格式
  4. solr官方提供的功能更多,而elasticsearch更注重核心功能,高级功能由第三方插件提供
  5. solr查询快,但更新索引时慢,用于电商等查询多的应用
  6. es建立索引宽,即实时性查询快,用于facebook新浪等搜索
  7. solr较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而elasticsearch相对开发维护者较少,更新太快,学习使用成本较高

3、Es相关安装

超详细安装教程:点我跳转

4、核心概念

文档教程地址:点我跳转

5、分词器ik

文档教程地址:点我跳转

6、RestFult 操作 Es

文档教程地址:点我跳转

7、CRUD

文档教程地址:跳转

8、SpingBoot+京东爬虫采集数据+全文搜索

源码仓库地址:点我跳转