ElasticSearch----分布式搜索引擎

本文详细介绍了ElasticSearch,一个基于Java的高性能分布式搜索引擎,它基于Lucene,提供了RESTful接口和全文检索功能。文章涵盖了ElasticSearch的安装、核心概念如集群、节点、索引、分片、副本,以及分词器的使用、文档操作、版本控制等。还讨论了ElasticSearch与关系型数据库的区别,以及倒排索引的工作原理。
摘要由CSDN通过智能技术生成

ElasticSearch

ElasticSearch

RESTful

在这里插入图片描述
在这里插入图片描述

全文检索

在这里插入图片描述

Lucene

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

在实际开发中,Lucene 几乎适用于任何需要全文检索的场景,所以 Lucene 先后发展出好多语言版本,例如 C++、C#、Python 等。

早在 2005 年,Lucene 就升级为 Apache 顶级开源项目。它的作者是 Doug Cutting,有的人可能没听过这这个人,不过你肯定听过他的另一个大名鼎鼎的作品 Hadoop。

不过需要注意的是,Lucene 只是一个工具包,并非一个完整的搜索引擎,开发者可以基于 Lucene 来开发完整的搜索引擎。比较著名的有 Solr、ElasticSearch,不过在分布式和大数据环境下,ElasticSearch 更胜一筹。

Lucene 主要有如下特点:

  • 简单
  • 跨语言
  • 强大的搜索引擎
  • 索引速度快
  • 索引文件兼容不同平台

ElasticSearch

ElasticSearch 是一个分布式、可扩展、近实时性的高性能搜索与数据分析引擎。ElasticSearch 基于 Java 编写,通过进一步封装 Lucene,将搜索的复杂性屏蔽起来,开发者只需要一套简单的 RESTful API 就可以操作全文检索。

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

在这里插入图片描述

整体上来说,ElasticSearch 有三大功能:

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

ElasticSearch 的主要特点:

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

ElasticSearch安装

安装ES服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • /etc/security/limits.conf
* soft nproc 4096

* hard nproc 4096

* soft nofile 65536

* hard nofile 65536

在这里插入图片描述
在这里插入图片描述

  • /etc/sysctl.conf
vm.max_map_count=655360

在这里插入图片描述

单节点安装

首先打开 Es 官网,找到 Elasticsearch:

然后点击下载按钮,选择合适的版本直接下载即可。
在这里插入图片描述

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

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

启动方式:

进入到 bin 目录下,直接执行 ./elasticsearch 启动即可。
在这里插入图片描述
看到 started 表示启动成功。

默认监听的端口是 9200,所以浏览器直接输入 localhost:9200 可以查看节点信息。
在这里插入图片描述

节点的名字以及集群(默认是 elasticsearch)的名字,我们都可以自定义配置。

打开 config/elasticsearch.yml 文件,可以配置集群名称以及节点名称。配置方式如下:

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

配置完成后,保存配置文件,并重启 es。重启成功后,刷新浏览器 localhost:9200 页面,就可以看到最新信息。

在这里插入图片描述
Es 支持矩阵:

HEAD 插件安装

Elasticsearch-head 插件,可以通过可视化的方式查看集群信息。

浏览器插件安装

Chrome 直接在 App Store 搜索 Elasticsearch-head,点击安装即可。

在这里插入图片描述

下载插件安装

在这里插入图片描述
在这里插入图片描述

四个步骤:

git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start

启动成功,页面如下:
在这里插入图片描述

注意,此时看不到集群数据。原因在于这里通过跨域的方式请求集群数据的,默认情况下,集群不支持跨域,所以这里就看不到集群数据。

解决办法如下,修改 es 的 config/elasticsearch.yml 配置文件,添加如下内容,使之支持跨域:

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

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

在这里插入图片描述

分布式安装

  • 一主二从
  • master 的端口是 9200,slave 端口分别是 9201 和 9202

首先修改 master 的 config/elasticsearch.yml 配置文件:

cluster.name: javaboy-es	#(自定义的集群名称)

node.name: master	#(自定义的节点名称)

node.master: true	#(作为master节点)

network.host: 127.0.0.1	#(主机IP地址)

配置完成后,重启 master。

将 es 的压缩包解压两份,分别命名为 slave01 和 slave02,代表两个从机。

分别对其进行配置。

slave01/config/elasticsearch.yml:

cluster.name: javaboy-es	#(自定义的集群名称,同master节点的配置一致)

node.name: slave01	#(自定义的节点名称)

network.host: 127.0.0.1	#(主机IP地址)

http.port: 9201	#(端口号)

discovery.zen.ping.unicast.hosts: ["127.0.0.1"]	#(找到master节点)

slave02/config/elasticsearch.yml:

cluster.name: javaboy-es	#(自定义的集群名称,同master节点的配置一致)

node.name: slave02	#(自定义的节点名称)

network.host: 127.0.0.1	#(主机IP地址)

http.port: 9202	#(端口号)

discovery.zen.ping.unicast.hosts: ["127.0.0.1"]	#(找到master节点)

然后分别启动 slave01 和 slave02。启动后,可以在 head 插件上查看集群信息。

在这里插入图片描述

Kibana 安装

在这里插入图片描述
在这里插入图片描述

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

安装步骤如下:

  • 下载 Kibana:https://www.elastic.co/cn/downloads/kibana
  • 解压
  • 配置 es 的地址信息(可选,如果 es 是默认地址以及端口,可以不用配置,具体的配置文件是 config/kibana.yml)
  • 执行 ./bin/kibana 文件启动
  • localhost:5601

在这里插入图片描述
Kibana 安装好之后,首次打开时,可以选择初始化 es 提供的测试数据,也可以不使用。

Kibana的基本操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

curl

在这里插入图片描述

在这里插入图片描述

ElasticSearch核心概念介绍

ElasticSearch核心概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

集群(Cluster)

es6.8

在这里插入图片描述

在这里插入图片描述

es7.10

在这里插入图片描述

  • es01
cluster.name: el-cluster
node.name: es01
#path.data: /home/es/es01/data
#path.logs: /home/es/es01/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["192.168.220.**0","192.168.220.**1","192.168.220.**2"]
cluster.initial_master_nodes: ["192.168.220.**0] 
http.cors.enabled: true
http.cors.allow-origin: "*"
  • es02
cluster.name: el-cluster
node.name: es02
#path.data: /home/es/es02/data
#path.logs: /home/es/es02/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["192.168.220.**0","192.168.220.**1","192.168.220.**2"]
cluster.initial_master_nodes: ["192.168.220.**0] 
http.cors.enabled: true
http.cors.allow-origin: "*"
  • es03
cluster.name: el-cluster
node.name: es03
#path.data: /home/es/es03/data
#path.logs: /home/es/es03/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["192.168.220.**0","192.168.220.**1","192.168.220.**2"]
cluster.initial_master_nodes: ["192.168.220.**0] 
http.cors.enabled: true
http.cors.allow-origin: "*"

一个或者多个安装了 es 节点的服务器组织在一起,就是集群,这些节点共同持有数据,共同提供搜索服务。

一个集群有一个名字,这个名字是集群的唯一标识,该名字成为 cluster name,默认的集群名称是 elasticsearch,具有相同名称的节点才会组成一个集群。

可以在 config/elasticsearch.yml 文件中配置集群名称:

cluster.name: javaboy-es

在集群中,节点的状态有三种:绿色、黄色、红色:

  • 绿色:节点运行状态为健康状态。所有的主分片、副本分片都可以正常工作。
  • 黄色:表示节点的运行状态为警告状态,所有的主分片目前都可以直接运行,但是至少有一个副本分片是不能正常工作的。
  • 红色:表示集群无法正常工作。

节点(Node)

集群中的一个服务器就是一个节点,节点中会存储数据,同时参与集群的索引以及搜索功能。一个节点想要加入一个集群,只需要配置一下集群名称即可。默认情况下,如果我们启动了多个节点,多个节点还能够互相发现彼此,那么它们会自动组成一个集群,这是 es 默认提供的,但是这种方式并不可靠,有可能会发生脑裂现象。所以在实际使用中,建议一定手动配置一下集群信息。

索引(Index)

索引可以从两方面来理解:

名词

具有相似特征文档的集合。

动词

索引数据以及对数据进行索引操作。

类型(Type)

类型是索引上的逻辑分类或者分区。在 es6 之前,一个索引中可以有多个类型,从 es7 开始,一个索引中,只能有一个类型。在 es6.x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值