目录

一、概述

二、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
ElasticSearch Solr
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可以非常方便地把来自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分词器的简单使用。由于笔者水平有限,如果不对之处,还望指出,相互学习,一起进步!

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

  1. ElasticSearch分布式搜索引擎从入门到实战应用(入门篇-基本命令操作)

    ElasticSearch分布式搜索引擎从入门到实战应用(入门篇) 1.入门须知 2.ElasticSearch概述 2.1.ES简介 2.2.应用场景 3.ES和Solr的对比 3.1.ES作用 3 ...

  2. PHP使用Elasticsearch 全文搜索引擎的开发

    PHP基于elasticsearch全文搜索引擎的开发 1.概述: 全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选.Elastic ...

  3. 一文看懂-ElasticSearch全文搜索引擎

    一文看懂-ElasticSearch全文搜索引擎 一.ElasticSearch简介 1.1 什么是ElasticSearch ElasticSearch简称ES,其中Elastic 从名字里我们可以 ...

  4. Bootstrap4+MySQL前后端综合实训-Day02-AM【Bootstrap4(入门、环境搭建、文字排版、颜色、表格、图片、进度条、折叠、输入框组、模态框)、Font Awesome字体图标】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 Typora语法 Day01-知识回顾 1.前端部分 flex布局 2.Bootstr ...

  5. nginx学习笔记-01nginx入门,环境搭建,常见命令

    nginx学习笔记-01nginx入门,环境搭建,常见命令 文章目录 nginx学习笔记-01nginx入门,环境搭建,常见命令 1.nginx的基本概念 2.nginx的安装,常用命令和配置文件 3 ...

  6. Java入门及环境搭建idea安装和简单使用

    Java入门及环境搭建 什么是Java Java Java是一门新的语言特点是: 语法有点像c 没有指针 没有内存管理 真正的可移植性,编写一次,到处运行. 面向对象 类型安全 高质量的类库 - Ja ...

  7. 乐鑫Esp32-S2学习之旅① 入门 ESP32-S2 环境搭建 ,分享如何直连苹果智能家居 HomeKit 平台,轻松语音 Siri 控制!

    本系列博客学习由非乐鑫官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 基于乐鑫ESP32 芯片模组 C SDK二次开发的技 ...

  8. Elasticsearch全文搜索引擎-PHP使用教程。

    1.声明依赖关系:         比方说,你的项目中需要一个php版的elasticsearch框架.为了将它添加到你的项目中(下载),你所需要做的就是创建一个 composer.json 文件,其 ...

  9. 【Java全栈学习笔记:第一阶段:JavaSE】:Java入门及环境搭建

    Java全栈课程网站: KuangStudy JavaSE课程地址: 狂神说Java 参考书籍:Java大学实用教程(第四版) 目录 Java入门及环境搭建 Java帝国的诞生 Java发展 Java ...

  10. ElasticSearch 全文搜索引擎的查询详解①(Ubuntu版 v6.6.2)

    ElasticSearch 全文搜索引擎的查询详解①(Ubuntu版 v6.6.2) 1. 前提 2. 轻量搜索 2.1 单条件查询 2.2 多条件查询 2.3 不指定属性查询(查询所有文档属性)-- ...

最新文章

  1. powermock跳过某方法_变频调速电动机产生机械共振原因和处理方法
  2. Java Web开发Tomcat中三种部署项目的方法
  3. liunx版mysql服务无法启动_linux环境下mysql无法启动
  4. 前端学习(626):数据类型简介
  5. 增强服务器安全性能,加强Linux服务器安全的20项建议
  6. 计算机应用能力power,全国专业技术人员计算机应用能力考试专用教材——PowerPoint 2003中文演示文稿5日通题库版(双色)(附光盘) - 中国考研网...
  7. oracle清空回收站
  8. ubuntu中执行jupyter格式代码
  9. php上传图片大小判断,jQuery实现判断上传图片类型和大小的方法示例
  10. string会被回收吗_互联网大厂面试题:这些面试都会吗?就想要30k?
  11. pythonselenium教程模拟鼠标和键盘_【02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!...
  12. PHP/JS中获取当前页面的完整URL
  13. 题解【[BJOI2012]算不出的等式】
  14. android自动登录_游戏社区App (三):客户端与服务端的加密处理 和 登录
  15. python数据结构和算法pdf_用python解决数据结构和算法.pdf
  16. 超图s3m服务加载时添加token
  17. python爬虫大作业任务书_爬虫大作业
  18. “Ubuntu 18.04.2 LTS _Bionic Beaver_ - Release amd64 (20190210)” 的盘片插入驱动器“/cdrom/”再按「回车」键
  19. 如何同时登陆多个微信账号
  20. Winform + Devexpress 实现看板效果

热门文章

  1. 马尔科夫决策过程(MDP) : GridWord(DP)
  2. 翻译: swift5 iOS中的自动布局教程:Auto Layout入门
  3. Swift 5 闭包Closure简明教程
  4. java 简易扫雷_JAVA基础课程设计 简易扫雷
  5. python无法打开txt_在Python中打开“.txt”文件
  6. Redis Zadd 命令 Redis 有序集合(sorted set)Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。如果某个成员已经是有序集的成员,那么更新
  7. python 实现冒泡排序
  8. 机器学习算法性能评价,改进的理论基础以及改进措施
  9. 实战!Servlet简单实践,完成上次的任务
  10. mysql 子查询 性能_mysql子查询性能