ElasticSearch概述与安装

ElasticSearch学习笔记一

  • ElasticSearch概述
  • ElasticSearch、Solr和Lucene对比
    • 1、ElasticSearch简介
    • 2、Solr简介
    • 3、Lucene简介
    • 4、ElasticSearch与Solr比较
    • ElasticSearch vs Solr 总结
  • 安装软件
    • ElasticSearch(Windows上)
    • 安装es head 可视化界面
    • 了解ELK
    • 安装kibana

ElasticSearch概述

Elasticsearch 是一个实时分布式存储搜索分析的引擎。

Elaticsearch,简称为es,es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是 通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单 。

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

ElasticSearch、Solr和Lucene对比

1、ElasticSearch简介

Elasticsearch是一个实时分布式搜索和分析引擎。 它让你以前所未有的速度处理大数据成为可能。

它用于 全文搜索、结构化搜索、分析以及将这三者混合使用:

维基百科使用Elasticsearch提供全文搜索并高亮关键字,以及输入实时搜索(search-asyou-type)和搜索纠错(did-you-mean)等搜索建议功能。

英国卫报使用Elasticsearch结合用户日志和社交网络数据提供给他们的编辑以实时的反馈,以便及时了解公众对新发表的文章的回应。

StackOverflow结合全文搜索与地理位置查询,以及more-like-this功能来找到相关的问题和答案。

Github使用Elasticsearch检索1300亿行的代码。

但是Elasticsearch不仅用于大型企业,它还让像DataDog以及Klout这样的创业公司将最初的想法变成可扩展的解决方案。

Elasticsearch可以在你的笔记本上运行,也可以在数以百计的服务器上处理PB级别的数据。

Elasticsearch是一个基于Apache Lucene™的开源搜索引擎。无论在开源还是专有领域, Lucene可被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。

但是, Lucene只是一个库。 想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是, Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

2、Solr简介

Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化

Solr可以独立运行,运行在letty. Tomcat等这些Selrvlet容器中 , Solr 索引的实现方法很简单,用POST方法向Solr服务器发送一个描述Field及其内容的XML文档, Solr根据xml文档添加、删除、更新索引。Solr 搜索只需要发送HTTP GET请求,然后对Solr返回xml、json等格式的查询结果进行解析,组织页面布局。

Solr不提供构建UI的功能, Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

solr是基于lucene开发企业级搜索服务器,实际上就是封装了lucene.

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交-定格式的文件,生成索引;也可以通过提出查找请求,并得到返回结果。

3、Lucene简介

Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。

Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。

Lucene是一个全文检索引擎的架构。那什么是全文搜索引擎?

全文搜索引擎是名副其实的搜索引擎,国外具代表性的有Google、Fast/AllTheWeb、AltaVista、Inktomi、Teoma、WiseNut等,国内著名的有百度(Baidu )。它们都是通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户,因此他们是真正的搜索引擎。

从搜索结果来源的角度,全文搜索引擎又可细分为两种,一种是拥有自己的检索程序( Indexer ),俗称”蜘蛛” ( Spider )程序或”机器人” ( Robot )程序,并自建网页数据库,搜索结果直接从自身的数据库中调用,如上面提到的7家引擎;另一种则是租用其他引擎的数据库,并按自定的格式排列搜索结果,如Lycos引擎。

4、ElasticSearch与Solr比较

  1. 当单纯的对已有数据进行搜索时,Solr更快
  2. 当实时建立索引时,Solr会产生io阻塞,查询性能较差,ElasticSearch具有明显的优势
  3. 随着数据量的增加,Solr的搜索效率会变得更低,而ElasticSearch却没有明显的变化

ElasticSearch vs Solr 总结

1、es基本是开箱即用(解压就可以用!) ,非常简单。Solr安装略微复杂一丢丢!

2、Solr 利用Zookeeper进行分布式管理,而Elasticsearch 自身带有分布式协调管理功能 。

3、Solr 支持更多格式的数据,比如JSON、XML、 CSV ,而Elasticsearch仅支持json文件格式。

4、Solr 官方提供的功能更多,而Elasticsearch本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑

5、 Solr 查询快,但更新索引时慢(即插入删除慢) ,用于电商等查询多的应用;

6、ES建立索引快(即查询慢) ,即实时性查询快,用于facebook新浪等搜索。

7、Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用。

8、Solr比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而Elasticsearch相对开发维护者较少,更新太快,学习使用成本较高。

安装软件

ElasticSearch(Windows上)

安装要求:ElasticSearch客户端,界面工具 ====>jdk最低要求是1.8!!

下载

官网下载地址:https://www.elastic.co/cn/elastic-stack/ElasticSearch概述与安装_第1张图片
网盘下载地址:https://pan.baidu.com/s/16A6mvZvxcswDsEn8jXaLIg
提取码:3nbw

安装

解压压缩包,打开之后效果如下
ElasticSearch概述与安装_第2张图片

测试

打开elasticsearch.bat文件
ElasticSearch概述与安装_第3张图片
ElasticSearch概述与安装_第4张图片

打开之后 在网址输入:http://127.0.0.1:9200/ 出现
ElasticSearch概述与安装_第5张图片
此时安装成功!

安装es head 可视化界面

使用前提:需要安装nodejs

下载地址:https://github.com/mobz/elasticsearch-head

下载之后目录
ElasticSearch概述与安装_第6张图片
进入文件夹,使用cmd,输入cnmp install ;安装依赖
ElasticSearch概述与安装_第7张图片
在输入npm run start 运行可视化界面
ElasticSearch概述与安装_第8张图片
在浏览器输入http://localhost:9100/,此时就是可视化界面,但是连接http://127.0.0.1:9200/,并没有连接上,此时要解决跨域问题,从9100端口到9200端口
ElasticSearch概述与安装_第9张图片
解决跨域问题:
1、开启跨域(在elasticsearch解压目录config下elasticsearch.yml中添加)

http.cors.enabled: true
http.cors.allow-origin: "*"

ElasticSearch概述与安装_第10张图片
跨域问题解决
ElasticSearch概述与安装_第11张图片

了解ELK

ELK是Elasticsearch、Logstash、 Kibana三大开源框架首字母大写简称。市面上也被成为Elastic Stack。

其中Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。

像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可见Elasticsearch提供的搜索能力确实强大,市面上很多时候我们简称Elasticsearch为es。

Logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ )收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)。

Kibana可以将elasticsearch的数据通过友好的页面展示出来 ,提供实时分析的功能。

市面上很多开发只要提到ELK能够一致说出它是一个日志分析架构技术栈总称 ,但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据分析和收集的场景,日志分析和收集只是更具有代表性。并非唯一性。

收集清洗数据(Logstash) ==> 搜索、存储(ElasticSearch) ==> 展示(Kibana)
ElasticSearch概述与安装_第12张图片

安装kibana

Kibana是一个针对ElasticSearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana ,可以通过各种图表进行高级数据分析及展示。Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板( dashboard )实时显示Elasticsearch查询动态。设置Kibana非常简单。无需编码或者额外的基础架构,几分钟内就可以完成Kibana安装并启动Elasticsearch索引监测。

官网:https://www.elastic.co/cn/kibana/
下载地址:https://www.elastic.co/cn/downloads/kibana

版本需要与ElasticSearch版本对应

下载kibana之后,解压即可(尽量将ElasticSearch相关工具放在统一目录下),此时我放在D盘中
ElasticSearch概述与安装_第13张图片
打开解压后的文件夹bin目录下的kibana.bat文件
ElasticSearch概述与安装_第14张图片
ElasticSearch概述与安装_第15张图片
访问http://localhost:5601

此时是中文版的 ,是因为我汉化了,汉化步骤如下
1、查看下载的kibana插件 有没有中文版的翻译,josn文件
ElasticSearch概述与安装_第16张图片
2、去kibana的config文件夹的kibana.yml配置
ElasticSearch概述与安装_第17张图片
3、重启kibana即可

学习ElasticSearch,我使用的是kibana作为搜索引擎的开发工具
ElasticSearch概述与安装_第18张图片

你可能感兴趣的