简述

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

Es的由来

许多年前,一个刚结婚的名叫 Shay Banon 的失业开发者,跟着他的妻子去了伦敦,他的妻子在那里学习厨师。 在寻找一个赚钱的工作的时候,为了给他的妻子做一个食谱搜索引擎,他开始使用 Lucene 的一个早期版本。

直接使用 Lucene 是很难的,因此 Shay 开始做一个抽象层,Java 开发者使用它可以很简单的给他们的程序添加搜索功能。 他发布了他的第一个开源项目 Compass。
后来 Shay 获得了一份工作,主要是高性能,分布式环境下的内存数据网格。这个对于高性能,实时,分布式搜索引擎的需求尤为突出, 他决定重写 Compass,把它变为一个独立的服务并取名 Elasticsearch。

第一个公开版本在2010年2月发布,从此以后,Elasticsearch 已经成为了 Github 上最活跃的项目之一,他拥有超过300名 contributors(目前736名 contributors )。 一家公司已经开始围绕 Elasticsearch 提供商业服务,并开发新的特性,但是,Elasticsearch 将永远开源并对所有人可用。

据说,Shay 的妻子还在等着她的食谱搜索引擎…

ElasticSearch和Lucene的区别

  • Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。
  • ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

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的区别

二者安装都很简单;
Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;
Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;
Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;
Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。
Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。

安装

下载ElasticSearch

前置环境
  • jdk8或以上版本
  • linux环境(windows也可)

官网:https://www.elastic.co/cn/elasticsearch/
选择过去的版本
在这里插入图片描述

选择版本,选择7.6.1版本,进行下载

在这里插入图片描述

随后选择Linux版本进行下载
上传至/opt目录下执行命令,进行解压缩
tar -zxvf elasticsearch-7.6.1-linux-x86_64.tar.gz
修改配置文件
  • node.name 节点名称
  • network.host 外网访问本机的ip
  • cluster.initial_master_nodes 集群节点

开启跨域访问
#将以下命令在配置文件末尾添加,随后保存并退出。
http.cors.enabled: true
http.cors.allow-origin: "*"

在这里插入图片描述

创建用户和用户组

elasticsearch添加用户和用户组并授权

groupadd es
useradd es -g es -p es
chown -R es:es elasticsearch
修改max_map_count
sudo sysctl -w vm.max_map_count=262144
sysctl -p

随后输入su es即可切换用户,进行启动,如果不切换用户,就会进行错误提示。

进入es/bin目录启动es
./elasticsearch &

看到started,说明已经启动成功

  • 浏览器访问:自己的服务器ip:9200,如果没有被修改的话。
  • 如果访问有问题,请检查linux防火墙是否关闭?
  • 配置文件是否配置正确?

如果没有问题,则可以看到下图,经典的语句:"You Know, for Search"/"你知道的,为了搜索"。

下载ElasticSearch-head

es-head是elastic提供的es的可视化工具

安装elasticSearch-head

检查服务器是否有nodejs工具
node -v

如果有版本号,则说明已经有此工具,如果没有可通过官网自行下载。
nodejs:http://nodejs.cn/download/

下载ElasticSearch-head

github:https://github.com/mobz/elasticsearch-head

下载完成之后,使用命令解压即可。
mkdir ./elasticsearch-head & unzip elasticsearch-head-master.zip -d ./elasticsearch-head

进入elasticsearch-head目录后执行命令

npm install
npm run start

可以看到已经启动了,访问服务,这里的服务ip是本机ip+9100端口

image.png

安装kibana

kibana介绍

Kibana 是一个免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化,并让您在 Elastic Stack 中进行导航。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。

下载

任意目录下载kibana并自行解压

https://artifacts.elastic.co/downloads/kibana/kibana-7.10.0-linux-x86_64.tar.gz

修改配置文件

打开kibana的config/kibana.yml,修改以下配置

image.png

运行kibana

进入kibana的bin目录

nohup ./kibana > start.log 2>&1 &

打开start.log查看结果

image.png

访问kibana,端口号为5601

image.png


Zeran
32 声望4 粉丝

学而不思则罔,思而不学则殆。