Elasticsearch(一)

Elasticsearch简介以及基本的环境搭建

文章目录

    • 1、Elasticsearch概述
    • 2、Elasticsearch和Solr得对比
    • 3、Elasticsearch的安装
      • 3.1、下载
      • 3.2、安装
      • 3.3、目录结构
      • 3.4、启动并访问测试
      • 3.5、安装可视化界面
      • 3.6、启动可视化界面
      • 3.7、访问对应端口
      • 3.8、修改Elasticsearch配置文件,解决跨域问题
    • 4、ELK概述
    • 5、Kibana概述
      • 5.1、Kibana下载
      • 5.2、Kibana安装
      • 5.3、Kibana启动
      • 5.4、访问测试
      • 5.5、汉化测试工具





1、Elasticsearch概述

简介

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

据国际权威的数据库产品评测机构DB Engines的统计,在2016年1月,ElasticSearch已超过Solr等,成为排名第一的搜索引擎类应用。



使用场景

1、维基百科,类似百度百科,全文检索,高亮,搜索推荐

2、The Guardian(国外新闻网站),类似搜狐新闻,用户行为日志(点击,浏览,收藏,评论)+社交 网络数据(对某某新闻的相关看法),数据分析,给到每篇新闻文章的作者,让他知道他的文章的公众 反馈(好,坏,热门,垃圾,鄙视,崇拜)

3、Stack Overflow(国外的程序异常讨论论坛),IT问题,程序的报错,提交上去,有人会跟你讨论和 回答,全文检索,搜索相关问题和答案,程序报错了,就会将报错信息粘贴到里面去,搜索有没有对应 的答案

4、GitHub(开源代码管理),搜索上千亿行代码

5、电商网站,检索商品

6、日志数据分析,logstash采集日志,ES进行复杂的数据分析,ELK技术, Elasticsearch+Logstash+Kibana

7、商品价格监控网站,用户设定某商品的价格阈值,当低于该阈值的时候,发送通知消息给用户,比如 说订阅牙膏的监控,如果高露洁牙膏的家庭套装低于50块钱,就通知我,我就去买。

8、BI系统,商业智能,Business Intelligence。比如说有个大型商场集团,BI,分析一下某某区域最近 3年的用户消费金额的趋势以及用户群体的组成构成,产出相关的数张报表,**区,最近3年,每年消费 金额呈现100%的增长,而且用户群体85%是高级白领,开一个新商场。ES执行数据分析和挖掘, Kibana进行数据可视化

9、国内:站内搜索(电商,招聘,门户,等等),IT系统搜索(OA,CRM,ERP,等等),数据分析 (ES热门 的一个使用场景)





2、Elasticsearch和Solr得对比

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的复杂性,从而让全文搜索变得简单。



Solr

Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。

Solr提供了 比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化 Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,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请求,向搜索引擎服务器提交一定格式的文件,生成索引;也可以通过提出查找请求,并得到返回 结果。



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引擎。



对比

1、当单纯的对已有数据进行搜索的时候,Solr更快

2、当实时建立索引时,Solr会产生IO阻塞,查询性能较低。Elasticsearch具有明显的优势

3、随着数量的增加,Solr的搜索效率会变得耕地,而Elasticsearch却没有明显的变化

总结:

  1. Elasticsearch 基本是开箱即用(解压即可 ),非常简单。Solr安装略微复杂一点。
  2. Solr 利用 Zookeeper 进行分布式管理,而Elasticsearch自身带有分布式协调管理功能。
  3. Solr 支持更多格式的数据,比如JSON、XML、CSV,而 Elasticsearch 仅支持JSON文件格式。
  4. Solr 官方提供的功能更多,而Elasticsearch本身更注重于核心功能,高级功能多有第三方插件提 供,例如图形化界面需要Kibana友好支撑
  5. Solr 查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用:
    • ES建立索引快(即查询慢),即实时性查询快,用于FaceBook新浪等搜索。
    • Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用。
  6. Solr比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而Elasticsearch相对开发维护者 较少,更新太快,学习使用成本较高





3、Elasticsearch的安装

注意:JDK一定要1.8及以上


3.1、下载

下载地址:https://www.elastic.co/cn/downloads/elasticsearch

Elasticsearch(一)_第1张图片



3.2、安装

解压即用(ELK三件套均是如此)

Elasticsearch(一)_第2张图片



3.3、目录结构

1、bin:启动文件

2、config:配置文件

  • log4j2:日志配置文件
  • jvm.options:java 虚拟机相关的配置
  • elasticsearch.yml:elasticsearch 的配置文件,默认 9200 端口

3、lib:相关jar包(Lucene)

4、logs:日志

5、modules:功能模块

6、plugins:插件(IK分词器)



3.4、启动并访问测试

双击文件即可启动

Elasticsearch(一)_第3张图片

访问对应的端口地址:http://127.0.0.1:9200/

Elasticsearch(一)_第4张图片

此时即为启动成功



3.5、安装可视化界面

环境前提:需要有node.js的环境

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

Elasticsearch(一)_第5张图片



3.6、启动可视化界面

1、下载后并完成解压,在对应的文件目录下进行安装

cnpm install(cnpm使用国内的下载比较快)

Elasticsearch(一)_第6张图片

2、安装完成后后,会出现node_modules文件夹

npm run start

Elasticsearch(一)_第7张图片


3.7、访问对应端口

对应的端口为9100

Elasticsearch(一)_第8张图片

该方式会出现一个跨域的问题



3.8、修改Elasticsearch配置文件,解决跨域问题

1、添加对应的跨域支持

Elasticsearch(一)_第9张图片

2、重启Elasticsearch

Elasticsearch(一)_第10张图片

Elasticsearch(一)_第11张图片

3、再次访问9100端口

Elasticsearch(一)_第12张图片

最初的学习,我们可以把es当作一个数据库(可以建立索引(库)、文档(库中的数据))

Elasticsearch(一)_第13张图片

我们更多的是使用前三个,后面的查询我们使用Kibana分词器来操作





4、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不仅仅适用于日志分析,它还可以支持其它任何数据分析和收集的场景,日志分析和收集只是更具有代表性。并非唯一性。

Elasticsearch(一)_第14张图片





5、Kibana概述

Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。

使用Kibana,可以通过各种图表进行高级数据分析及展示。Kibana让海量数据更容易理 解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查 询动态。

设置Kibana非常简单。无需编码或者额外的基础架构,几分钟内就可以完成Kibana安装并启动 Elasticsearch索引监测。



5.1、Kibana下载

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

注意下载的版本需要与Elasticsearch的版本相对应

Elasticsearch(一)_第15张图片



5.2、Kibana安装

是一个表准的前端化工程,拆箱即用

安装方式:直接解压即可

Elasticsearch(一)_第16张图片



5.3、Kibana启动

一定要安装node.js的环境(它本质也是一个前端话的工程)

Elasticsearch(一)_第17张图片



5.4、访问测试

端口号:5601

出现如下效果,即为访问成功

Elasticsearch(一)_第18张图片

开发的工具有很多,但是为了后期的学习,我们直接使用Kibana进行数据的测试

Elasticsearch(一)_第19张图片



5.5、汉化测试工具

Kibana是配套带有相应的汉化功能的,我们只需要进行相应的配置修改即可

对应的汉化文件的位置

Elasticsearch(一)_第20张图片

修改配置信息

Elasticsearch(一)_第21张图片

至此,汉化完成

Elasticsearch(一)_第22张图片

你可能感兴趣的:(自学知识笔记)