01、ES实战:简介+安装+核心概念

一、Lucene

谈到搜索引擎基本都绕不开Lucene,作为一个开源、免费、高性能、纯 Java 编写的全文检索引擎,可以算作是开源领域最好的全文检索工具包。

不过Lucene只是一个工具包,并非完整的搜索引擎。而基于Lucene开发的完整搜索引擎有Solr、ElasticSearch,在分布式和大数据场景下,ElasticSearch更胜一筹。

Lucene主要特点:

  • 简单
  • 跨语言(除了java,还有C++、C#、Python等语言版本)
  • 强大的搜索引擎
  • 索引速度快
  • 索引文件兼容不同平台

二、ElasticSearch

1、简介

ElasticSearch 基于 Java 编写,通过进一步封装 Lucene,将搜索的复杂性屏蔽起来,开发者只需要一套简单的 RESTful API 就可以操作全文检索。

ElasticSearch 在分布式环境下表现优异,支持 PB 级别的结构化或非结构化海量数据处理,这也是它比较受欢迎的原因之一。

ElasticSearch 的主要特点:

  • 分布式文件存储。
  • 实时分析的分布式搜索引擎。
  • 高可拓展性。
  • 可插拔的插件支持。

ElasticSearch 有三大功能:

  • 数据搜集
  • 数据分析
  • 数据存储

2、安装

2.1、单节点安装

首先在ES官网上下载ElasticSearch,我们这里选择的是7.10版本

Es支持矩阵

将下载的文件解压,解压后的目录含义如下:

目录 含义
modules 依赖模块目录
lib 第三方依赖库
logs 输出日志目录
plugins 插件目录
bin 可执行文件目录
config 配置文件目录
data 数据存储目录

启动方式:进入到 bin 目录下,windows系统直接执行 elasticsearch.bat 启动即可,看到 started 表示启动成功。

ElasticSearch默认监听端口是9200,浏览器直接访问localhost:9200可以看到节点信息。

其中节点和集群的名字都可以自定义配置,打开 config/elasticsearch.yml 文件,添加以下配置:

cluster.name: amby-es
node.name: master

保存配置文件,重启Es后,刷新localhost:9200即可看到新的自定义节点和集群名字 。

2.2、HEAD工具安装

Elasticsearch-head 插件,可以通过可视化的方式查看集群信息,分别有Chrome浏览器插件安装和下载插件安装两种方式,这里我们选用下载插件安装方式。

首先从GitHub上下载ElasticSearch-head插件包,地址:https://github.com/mobz/elasticsearch-head,可以选择拉取到git,或者直接下载zip压缩包。

*

下载完成后,进入到ElasticSearch-head目录,首先执行 npm install 命令安装插件(使用 npm 命令需要安装 node.js)。

安装完成后,执行 npm run start 命令,启动插件。看到以下页面表示启动成功:

*

启动成功后,访问9100端口,页面如下:

*

**注意:**如果使用下载插件安装,此时看不到集群数据。原因在于这里通过跨域的方式请求集群数据的,默认情况下,集群不支持跨域,所以这里就看不到集群数据有跨域问题。需要在config/elasticsearch.yml 文件中添加以下配置:

http.cors.enabled: true
http.cors.allow-origin: "*"

配置完成后,重启 es,此时 head 上就有数据了。

*

2.3、分布式安装

我们以一主二从为例,master端口为9200,slave端口分别为9201和9202。

首先在master主机的config/elasticsearch.yml文件中添加以下配置:

node.master: true
network.host: 127.0.0.1

另外复制两份es压缩包,分别解压成slave01和slave02,分别在config/elasticsearch.yml文件中添加以下配置:

# 集群名称必须保持一致
cluster.name: amby-es
node.name: slave01
network.host: 127.0.0.1
http.port: 9201
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
# 集群名称必须保持一致
cluster.name: amby-es
node.name: slave02
network.host: 127.0.0.1
http.port: 9202
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

启动两台从机,就可以在head上看到集群信息了。

2.4、Kibana安装

Kibana 是一个 Elastic 公司推出的一个针对 es 的分析以及数据可视化平台,可以搜索、查看存放在 es 中的数据。

首先在官网下载Kibana:https://www.elastic.co/cn/kibana

解压后执行运行bin/kibana.bat文件启动,访问localhost:5601查看。因为我们是新安装的es还没有数据,可以选择初始化 es 提供的测试数据,也可以不使用。

注意,如果有修改过es的端口和地址,需要在config/kibana.yml文件中配置。

3、核心概念

1、 集群(Cluster):一个或多个节点组成一个集群,维护共同的数据,一起对外提供服务集群中所有节点必须要有共同的集群名字,可以在elasticsearc.yml文件中修改cluster.name在集群有三种状态:绿色(所有分片都能正常工作)、黄色(至少一个副本分片不能正常工作)、红色(集群不能正常工作);
2、 节点(Node):集群中的一个服务器就是一个节点,节点中会存储数据,同时参与集群的索引以及搜索功能将一个节点加入集群,只需要配置集群名即可;
3、 索引(Index):可以分两种,名词-具有相似特征文档的集合、动词-索引数据以及对数据索引操作;
4、 类型(Type):类型是索引上的逻辑分类或分区;
5、 文档(document):一个可以被索引的数据单元,例如一个用户的文档、一个产品的文档等等,文档都是JSON格式的;
6、 分片(Shards):索引都是存储在节点上,受限于节点的空间大小以及数据处理能力,需要对索引进行分片在创建索引的时候,需要指定分片的数量默认情况下,一个索引会自动创建1个分片,并且为每一个分片创建一个副本;
7、 副本(Replicas):对主分片的备份;
8、 Settings:对索引的定义信息;
9、 Mapping:保存了定义索引字段的存储类型、分词方式、是否存储等信息;
10、 Anzlyzer:字段分词方式的定义;

版权声明:

本文仅记录ElasticSearch学习心得,如有侵权请联系删除。
更多内容请访问原创作者:
微信公众号:江南一点雨 *
B站:https://space.bilibili.com/49484631?from=search&seid=6136072956000981995

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: