ElasticSearch全文搜索引擎之入门以及环境搭建

目录

一、概述

二、Elasticsearch和Solr的区别

三、Elaticsearch安装

四、Kibana的安装

五、总结


一、概述

Elaticsearch,简称ES, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
Elasticsearch使用Java开发,并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

  • Elasticsearch的实现原理

Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。Elasticsearch是分布式的,这意味着索引可以被分成分片,每个分片可以有0个或多个副本。每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。“相关数据通常存储在同一个索引中,该索引由一个或多个主分片和零个或多个复制分片组成。

注意:一旦创建了索引,就不能更改主分片的数量。

Elasticsearch使用Lucene,并试图通过JSON和Java API提供其所有特性。它支持facetting和percolating,如果新文档与注册查询匹配,这对于通知非常有用。另一个特性称为“网关”,处理索引的长期持久性;例如,在服务器崩溃的情况下,可以从网关恢复索引。Elasticsearch支持实时GET请求,适合作为NoSQL数据存储,但缺少分布式事务。

二、Elasticsearch和Solr的区别

除了Elasticsearch搜索引擎,还有另外一款也是比较多公司在用的,那就是Solr,只不过他两都是基于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请求,向搜索引擎服务器提交一定格式的文件,生成索引;也可以通过提出查找请求,并得到返回结果;

下面通过一个表格总结一下两者主要的区别:

ElasticSearch vs Solr
ElasticSearchSolr
Elasticsearch基本是开箱即用,非常简单Solr安装略微复杂
Elasticsearch 自身带有分布式协调管理功能Solr利用 Zookeeper 进行分布式管理
Elasticsearch 仅支持json文件格式Solr 支持更多格式的数据,比如JSON、XML、CSV
Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑Solr 官方提供的功能更多
Elasticsearch 建立索引快(即查询慢),即实时性查询快,用于facebook新浪等搜索,Elasticsearch 更适用于新兴的实时搜索应用

Solr 查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用,Solr 是传统搜索应用的有力解决方案

三、Elaticsearch安装

Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。下面我们就来搭建ELK三个环境。

【a】Elaticsearch下载地址

https://www.elastic.co/cn/downloads/elasticsearch

【b】解压缩

笔者这里下载的7.6版本进行测试,我们将下载出来的elasticsearch-7.6.1-windows-x86_64压缩包解压到指定的目录:

笔者解压到D:\development\es目录下。解压缩后的文件目录如下图所示:

下面是对es各个目录接口的解释:

  • bin:二进制文件;
  • conf:配置文件,主要包含:elasticsearch.yml(elasticsearch配置文件)、jvm.options(虚拟机配置文件) 、log4j2.properties(日志配置文件)。
  • lib:相关jar包;
  • modules:相关模块;
  • plugins:相关相关插件;
  • logs:日志文件;

【c】启动elasticsearch

双击bin目录下的elasticsearch.bat批处理文件就可以启动:

 

启动完成后,浏览器访问:127.0.0.1:9200 ,可以看到浏览器返回如下信息:

【d】安装head 插件

注意,elasticsearch-head插件需要node.js环境,所以先保证本机先安装好node环境和cnpm淘宝源。

#安装淘宝源
npm config set registry https://registry.npm.taobao.org

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

同理,将下载下来的elasticsearch-head-master.zip进行解压缩,解压缩后的目录如下:

首先执行cnpm install安装head插件所需的依赖包:

依赖包安装完成后,执行cnpm run start启动head插件。 

head插件启动完成后,浏览器访问:http://localhost:9100/

可以看到,这里存在跨域问题,下面我们来解决跨域的问题:

首先先停止elasticsearch,修改config目录下的elasticsearch.yml文件,在文件最后面增加如下内容:

###解决跨域问题
http.cors.enabled: true
http.cors.allow-origin: "*"

新增完记得保存,然后我们重启elasticsearch,启动完成后,浏览器再次访问: http://localhost:9100/

可以看到,head成功连接上elasticsearch。 到此,Elasticsearch和ElasticSearch-head已经搭建成功。

四、Kibana的安装

ELK中的K指的就是Kibana,Kibana能够对ES的查询做监控。

Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态。

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

Kibana主要功能有下面几点:

  • Elasticsearch无缝之集成

Kibana架构为Elasticsearch定制,可以将任何结构化和非结构化数据加入Elasticsearch索引。Kibana还充分利用了Elasticsearch强大的搜索和分析功能。

  • 整合你的数据

Kibana能够更好地处理海量数据,并据此创建柱形图、折线图、散点图、直方图、饼图和地图。

  • 复杂数据分析

Kibana提升了Elasticsearch分析能力,能够更加智能地分析数据,执行数学转换并且根据要求对数据切割分块。

  • 接口灵活,分享更容易

 使用Kibana可以更加方便地创建、保存、分享数据,并将可视化数据快速交流。

  • 配置简单

Kibana的配置和启用非常简单,用户体验非常友好。Kibana 4自带Web服务器,可以快速启动运行。

  • 可视化多数据源

Kibana可以非常方便地把来自LogstashES-HadoopBeats或第三方技术的数据整合到Elasticsearch,支持的第三方技术包括Apache FlumeFluentd等。

  • 简单数据导出

Kibana可以方便地导出感兴趣的数据,与其它数据集合并融合后快速建模分析,发现新结果。

下面我们先安装Kibana:

【a】Kibana下载地址: https://www.elastic.co/downloads/kibana,注意,尽量保持与Elasticsearch相同的版本。

将下载好的压缩包进行压缩,解压缩后的目录结构如下图所示:

【b】启动Kibana

启动成功后,浏览器访问:http://localhost:5601/app/kibana,可以看到如下图界面,这就是Kibana提供的可视化图标页面,非常直观。

 开发工具:

【c】汉化Kibana

由于kibana界面全是英文,不太好看,所以我们可以进行汉化,修改config目录下的kibana.yml配置文件:

修改完成后重启kibana,继续访问:http://localhost:5601/

如上图,汉化成功。至此,Kibana环境搭建成功。

五、总结

本篇文章主要介绍了ElasticSearch的一些基础知识,并成功搭建了ES常见的工具:Head插件和Kibana可视化分析界面,下一篇文章将介绍ElasticSearch的一些重要概念和IK分词器的简单使用。由于笔者水平有限,如果不对之处,还望指出,相互学习,一起进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值