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 | 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全文搜索引擎之入门以及环境搭建相关推荐
- ElasticSearch分布式搜索引擎从入门到实战应用(入门篇-基本命令操作)
ElasticSearch分布式搜索引擎从入门到实战应用(入门篇) 1.入门须知 2.ElasticSearch概述 2.1.ES简介 2.2.应用场景 3.ES和Solr的对比 3.1.ES作用 3 ...
- PHP使用Elasticsearch 全文搜索引擎的开发
PHP基于elasticsearch全文搜索引擎的开发 1.概述: 全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选.Elastic ...
- 一文看懂-ElasticSearch全文搜索引擎
一文看懂-ElasticSearch全文搜索引擎 一.ElasticSearch简介 1.1 什么是ElasticSearch ElasticSearch简称ES,其中Elastic 从名字里我们可以 ...
- Bootstrap4+MySQL前后端综合实训-Day02-AM【Bootstrap4(入门、环境搭建、文字排版、颜色、表格、图片、进度条、折叠、输入框组、模态框)、Font Awesome字体图标】
[Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目 录 Typora语法 Day01-知识回顾 1.前端部分 flex布局 2.Bootstr ...
- nginx学习笔记-01nginx入门,环境搭建,常见命令
nginx学习笔记-01nginx入门,环境搭建,常见命令 文章目录 nginx学习笔记-01nginx入门,环境搭建,常见命令 1.nginx的基本概念 2.nginx的安装,常用命令和配置文件 3 ...
- Java入门及环境搭建idea安装和简单使用
Java入门及环境搭建 什么是Java Java Java是一门新的语言特点是: 语法有点像c 没有指针 没有内存管理 真正的可移植性,编写一次,到处运行. 面向对象 类型安全 高质量的类库 - Ja ...
- 乐鑫Esp32-S2学习之旅① 入门 ESP32-S2 环境搭建 ,分享如何直连苹果智能家居 HomeKit 平台,轻松语音 Siri 控制!
本系列博客学习由非乐鑫官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 基于乐鑫ESP32 芯片模组 C SDK二次开发的技 ...
- Elasticsearch全文搜索引擎-PHP使用教程。
1.声明依赖关系: 比方说,你的项目中需要一个php版的elasticsearch框架.为了将它添加到你的项目中(下载),你所需要做的就是创建一个 composer.json 文件,其 ...
- 【Java全栈学习笔记:第一阶段:JavaSE】:Java入门及环境搭建
Java全栈课程网站: KuangStudy JavaSE课程地址: 狂神说Java 参考书籍:Java大学实用教程(第四版) 目录 Java入门及环境搭建 Java帝国的诞生 Java发展 Java ...
- ElasticSearch 全文搜索引擎的查询详解①(Ubuntu版 v6.6.2)
ElasticSearch 全文搜索引擎的查询详解①(Ubuntu版 v6.6.2) 1. 前提 2. 轻量搜索 2.1 单条件查询 2.2 多条件查询 2.3 不指定属性查询(查询所有文档属性)-- ...
最新文章
- powermock跳过某方法_变频调速电动机产生机械共振原因和处理方法
- Java Web开发Tomcat中三种部署项目的方法
- liunx版mysql服务无法启动_linux环境下mysql无法启动
- 前端学习(626):数据类型简介
- 增强服务器安全性能,加强Linux服务器安全的20项建议
- 计算机应用能力power,全国专业技术人员计算机应用能力考试专用教材——PowerPoint 2003中文演示文稿5日通题库版(双色)(附光盘) - 中国考研网...
- oracle清空回收站
- ubuntu中执行jupyter格式代码
- php上传图片大小判断,jQuery实现判断上传图片类型和大小的方法示例
- string会被回收吗_互联网大厂面试题:这些面试都会吗?就想要30k?
- pythonselenium教程模拟鼠标和键盘_【02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!...
- PHP/JS中获取当前页面的完整URL
- 题解【[BJOI2012]算不出的等式】
- android自动登录_游戏社区App (三):客户端与服务端的加密处理 和 登录
- python数据结构和算法pdf_用python解决数据结构和算法.pdf
- 超图s3m服务加载时添加token
- python爬虫大作业任务书_爬虫大作业
- “Ubuntu 18.04.2 LTS _Bionic Beaver_ - Release amd64 (20190210)” 的盘片插入驱动器“/cdrom/”再按「回车」键
- 如何同时登陆多个微信账号
- Winform + Devexpress 实现看板效果
热门文章
- 马尔科夫决策过程(MDP) : GridWord(DP)
- 翻译: swift5 iOS中的自动布局教程:Auto Layout入门
- Swift 5 闭包Closure简明教程
- java 简易扫雷_JAVA基础课程设计 简易扫雷
- python无法打开txt_在Python中打开“.txt”文件
- Redis Zadd 命令 Redis 有序集合(sorted set)Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。如果某个成员已经是有序集的成员,那么更新
- python 实现冒泡排序
- 机器学习算法性能评价,改进的理论基础以及改进措施
- 实战!Servlet简单实践,完成上次的任务
- mysql 子查询 性能_mysql子查询性能