赞
踩
目录
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是分布式的,这意味着索引可以被分成分片,每个分片可以有0个或多个副本。每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。“相关数据通常存储在同一个索引中,该索引由一个或多个主分片和零个或多个复制分片组成。
注意:一旦创建了索引,就不能更改主分片的数量。
Elasticsearch使用Lucene,并试图通过JSON和Java API提供其所有特性。它支持facetting和percolating,如果新文档与注册查询匹配,这对于通知非常有用。另一个特性称为“网关”,处理索引的长期持久性;例如,在服务器崩溃的情况下,可以从网关恢复索引。Elasticsearch支持实时GET请求,适合作为NoSQL数据存储,但缺少分布式事务。
除了Elasticsearch搜索引擎,还有另外一款也是比较多公司在用的,那就是Solr,只不过他两都是基于Lucene封装了一层的。下面我们对比一下两者。
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 | Solr |
---|---|
Elasticsearch基本是开箱即用,非常简单 | Solr安装略微复杂 |
Elasticsearch 自身带有分布式协调管理功能 | Solr利用 Zookeeper 进行分布式管理 |
Elasticsearch 仅支持json文件格式 | Solr 支持更多格式的数据,比如JSON、XML、CSV |
Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑 | Solr 官方提供的功能更多 |
Elasticsearch 建立索引快(即查询慢),即实时性查询快,用于facebook新浪等搜索,Elasticsearch 更适用于新兴的实时搜索应用 | Solr 查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用,Solr 是传统搜索应用的有力解决方案 |
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各个目录接口的解释:
【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已经搭建成功。
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可以非常方便地把来自Logstash、ES-Hadoop、Beats或第三方技术的数据整合到Elasticsearch,支持的第三方技术包括Apache Flume、Fluentd等。
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分词器的简单使用。由于笔者水平有限,如果不对之处,还望指出,相互学习,一起进步!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。