Elasticsearch数据库

这篇具有很好参考价值的文章主要介绍了Elasticsearch数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 什么是ElasticSearch

1.1 概念及特点

  1. Elasticsearch和MongoDB/Redis/Memcache一样,是非关系型数据库。是一个接近实时的搜索平台,从索引这个文档到这个文档能够被搜索到只有一个轻微的延迟,企业应用定位:采用Restful API标准的可扩展和高可用的实时数据分析的全文搜索工具。

  2. 可拓展:支持一主多从且扩容简易,只要cluster.name一致且在同一个网络中就能自动加入当前集群;本身就是开源软件,也支持很多开源的第三方插件。

  3. 高可用:在一个集群的多个节点中进行分布式存储,索引支持shards和复制,即使部分节点down掉,也能自动进行数据恢复和主从切换。

  4. 数据存储的最小单位是文档,本质上是一个JSON 文本:

Elasticsearch数据库

1.2 ElasticSearch适用场景概述

  1. 维基百科,类似百度百科,全文检索,高亮,搜索推荐

  2. The Guardian(国外新闻网站),类似搜狐新闻,用户行为日志(点击,浏览,收藏,评论)+社交网络数据(对某某新闻的相关看法),数据分析,给到每篇新闻文章的作者,让他知道他的文章的公众反馈(好,坏,热门,垃圾,鄙视,崇拜)

  3. Stack Overflow(国外的程序异常讨论论坛),IT问题,程序的报错,提交上去,有人会跟你讨论和回答,全文检索,搜索相关问题和答案,程序报错了,就会将报错信息粘贴到里面去,搜索有没有对应的答案

  4. GitHub(开源代码管理),搜索上千亿行代码

  5. 电商网站,检索商品

  6. 国内:站内搜索(电商,招聘,门户,等等),IT系统搜索(OA,CRM,ERP,等等),数据分析(ES热门的一个使用场景)

2. 安装ElasticSearch

2.1 下载安装包

官网下载地址:
https://www.elastic.co/cn/downloads/past-releases

2.2 环境说明

//系统版本
[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)
//关闭防火墙
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld
[root@localhost ~]# sed -i '7s/enforcing/disabled/g' /etc/selinux/config
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive

2.3 创建es的用户

[root@localhost ~]# groupadd es
[root@localhost ~]# useradd -g es -s /bin/bash -md /home/es es

2.4 创建es存储位置

//存放在/var/es(根据实际需求)
[root@localhost ~]# mkdir /var/es && cd /var/es
[root@localhost es]# mkdir data && mkdir log
[root@localhost es]# chown -Rf es:es /var/es/

2.5 安装es

//创建文件夹,并将安装包上传到这里
[root@localhost ~]# mkdir /usr/local/es && cd /usr/local/es
//上传安装包
[root@localhost src]# ls
debug  elasticsearch-6.8.20.tar.gz  kernels
//解压安装包
[root@localhost src]# tar xf elasticsearch-6.8.20.tar.gz -C /usr/local/es/
[root@localhost src]# cd /usr/local/es/
[root@localhost es]# chown -Rf es:es /usr/local/es/elasticsearch-6.8.20/

2.5 修改配置文件

//编辑配置文件
[root@localhost es]# vim /usr/local/es/elasticsearch-6.8.20/config/elasticsearch.yml
//取消cluster.name前的#号注释,改成自己起的名字。(注意前面的数字代表行号)
17 cluster.name: my-application
//node.name取消#号
23 node.name: node-1
//设置path.data,取消#号,改为如下的
33 path.data: /var/es/data
//设置path.logs,取消#号,改为如下的
37 path.logs: /var/es/log
//network.host取消#号,改为0.0.0.0(允许所有ip访问)
55 network.host: 0.0.0.0
//取消http.port#
59 http.port: 9200
//在文件的最后添加以下配置
 89 bootstrap.memory_lock: false
 90 bootstrap.system_call_filter: false

2.6 系统优化

//修改文件1
[root@localhost es]# vi /etc/security/limits.conf
末尾添加
62 es soft nofile 65536
63 es hard nofile 65536
64 es soft nproc 4096
65 es hard nproc 4096
//修改文件2
[root@localhost es]# vim /etc/sysctl.conf 
末尾添加
11 vm.max_map_count = 655360
[root@localhost es]# sysctl -p
vm.max_map_count = 655360

2.7 安装jdk环境

//上传jdk安装包
[root@localhost src]# ls
debug  elasticsearch-6.8.20.tar.gz  jdk-8u131-linux-x64.tar.gz  kernels
//解压安装包
[root@localhost src]# tar xf jdk-8u131-linux-x64.tar.gz -C /usr/local/
//添加环境变量
[root@localhost src]# vim /etc/profile
末尾添加
 78 #JAVA_HOME
 79 export JAVA_HOME=/usr/local/java
 80 #JRE_HOME
 81 export JRE_HOME=/usr/local/java/jre
 82 #CALSSPATH
 83 export CLASSPATH=$CLASSPATH:${JAVA_HOME}/lib:${JRE_HOME}/lib
 84 #PATH
 85 export PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin

//重命名
[root@localhost ~]# mv /usr/local/jdk1.8.0_131/ /usr/local/java
[root@localhost ~]# source /etc/profile
[root@localhost ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

2.8 切换es用户启动数据库

[root@localhost ~]# su es
[es@localhost root]$ /usr/local/es/elasticsearch-6.8.20/bin/elasticsearch &

2.9 systemctl管理

2.10 访问

用浏览器访问ip:9200(安装的设备9200端口),看到如下的说明安装成功:
Elasticsearch数据库

3. kibana

3.1 kibana介绍

Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。KibanaElasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。
ElasticsearchLogstashKibana这三个技术就是我们常说的ELK技术栈,可以说这三个技术的组合是大数据领域中一个很巧妙的设计。一种很典型的MVC思想,模型持久层,视图层和控制层。Logstash担任控制层的角色,负责搜集和过滤数据。Elasticsearch担任数据持久层的角色,负责储存数据。而我们这章的主题Kibana担任视图层角色,拥有各种维度的查询和分析,并使用图形化的界面展示存放在Elasticsearch中的数据。

3.2 安装kibana

官网下载地址:
https://www.elastic.co/cn/downloads/past-releases#kibana

3.3 上传安装包

//使用rz命令或者xftp上传
[root@localhost src]# ls
debug  elasticsearch-6.8.20.tar.gz  jdk-8u131-linux-x64.tar.gz  kernels  kibana-6.8.20-linux-x86_64.tar.gz

3.4 解压文件

[root@localhost src]# tar xf kibana-6.8.20-linux-x86_64.tar.gz -C /usr/local/

3.5 修改配置文件

//下列的序号为行号
[root@localhost src]# vim /usr/local/kibana-6.8.20-linux-x86_64/config/kibana.yml
7 server.host: "192.168.5.55"                           //ES服务器主机地址
28 elasticsearch.hosts: ["http://192.168.5.55:9200"]    //ES服务器地址

3.6 启动

[root@localhost src]# cd /usr/local/kibana-6.8.20-linux-x86_64/
[root@localhost kibana-6.8.20-linux-x86_64]# ./bin/kibana &

3.7 浏览器访问

http://192.168.5.55:5601/app/kibana
Elasticsearch数据库

4. Elasticsearch高可用集群

4.1 ES是如何解决高并发

ES是一个分布式全文检索框架,隐藏了复杂的处理机制,核心内容 分片机制、集群发现、分片负载请求路由。

4.2 ES基本概念名词

Cluster

代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

Shards

代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改

replicas

代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

Recovery

代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

4.3 ES为什么要实现集群

ES集群中索引可能由多个分片构成,并且每个分片可以拥有多个副本。通过将一个单独的索引分为多个分片,我们可以处理不能在一个单一的服务器上面运行的大型索引,简单的说就是索引的大小过大,导致效率问题。不能运行的原因可能是内存也可能是存储。由于每个分片可以有多个副本,通过将副本分配到多个服务器,可以提高查询的负载能力。

ES集群核心原理分析:

  1. 每个索引会被分成多个分片shards进行存储,默认创建索引是分配5个分片进行存储。
    每个分片都会分布式部署在多个不同的节点上进行部署,该分片成为primary shards。
    注意:索引的主分片primary shards定义好后,后面不能做修改。

  2. 为了实现高可用数据的高可用,主分片可以有对应的备分片replics shards,replic shards分片承载了负责容错、以及请求的负载均衡。

注意: 每一个主分片为了实现高可用,都会有自己对应的备分片,主分片对应的备分片不能存放同一台服务器上(单台ES没有备用分片的)。主分片primary shards可以和其他replics shards存放在同一个node节点上。
在往主分片服务器存放数据时候,会对应实时同步到备用分片服务器:

Elasticsearch数据库
但是查询时候,所有(主、备)都进行查询。

主的可以存放副的:
Elasticsearch数据库
Node1 :P1+P2+R3组成了完整 的数据! 分布式存储

ES核心存放的核心数据是索引!
如果ES实现了集群的话,会将单台服务器节点的索引文件使用分片技术,分布式存放在多个不同的物理机器上。
分片就是将数据拆分成多台节点进行存放
在ES分片技术中,分为主(primary)分片、副(replicas)分片。这样做是为了容错性

5. 高可用ES集群部署

5.1 环境说明

系统环境:
[es@localhost root]$ cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)

主机:

IP地址 节点 数据库版本 可视化工具
192.168.5.55 node1(主) elasticsearch-6.8.20 kibana-6.8.20
192.168.5.56 node2 elasticsearch-6.8.20
192.168.5.100 node3 elasticsearch-6.8.20

5.2 安装过程

需要准备好三台主机已经安装好ES数据库,安装的过程请查看目录第二节
注:关闭防火墙

5.3 修改配置文件

修改192.168.5.55配置文件
[root@localhost config]# pwd
/usr/local/es/elasticsearch-6.8.20/config
[root@localhost config]# vim elasticsearch.yml
注:前面的序号为行号,标记多少行

前面省略……
17 cluster.name: myes   //集群名称,保证三台集群名字相同
23 node.name: node-1   //当前节点名称,集群内节点名字不能相同
33 path.data: /var/es/data //数据存放目录
37 path.logs: /var/es/log  //日志存放目录
55 network.host: 0.0.0.0   //主机  
59 http.port: 9200        //端口号
68 discovery.zen.ping.unicast.hosts: ["192.168.5.55", "192.168.5.56","192.168.5.100"]  //多个服务集群ip
72 discovery.zen.minimum_master_nodes: 1   //最少主节点数量
89 bootstrap.memory_lock: false     //添加以下两行,开放网络权限
90 bootstrap.system_call_filter: false

剩下的两台利用scp命令远程覆盖配置文件
注意:记得修改节点名称,集群内节点名字不能相同
[root@localhost ~]# cd /usr/local/es/elasticsearch-6.8.20/config/
[root@localhostconfig]# scp elasticsearch.yml root@192.168.5.56:/usr/local/es/  
elasticsearch-6.8.20/config/

5.4 启动es数据库

三台依次启动
[root@localhost config]# su es
[es@localhost config]$ /usr/local/es/elasticsearch-6.8.20/bin/elasticsearch &

5.5 集群测试

通过浏览器访问如下地址查看集群启动状态
192.168.5.55:9200/_cat/health?v
Elasticsearch数据库

//查看集群信息
[root@localhost config]# curl 192.168.5.55:9200/_cat/nodes
192.168.5.56  14 96 1 0.05 0.15 0.13 mdi - node-2
192.168.5.100 14 90 0 0.00 0.06 0.06 mdi - node-3
192.168.5.55  23 97 2 0.00 0.04 0.05 mdi * node-1  带*号表示主节点
//检查分片是否正常

 [root@localhost ~]# curl 192.168.5.55:9200/_cat/shards
.kibana_task_manager            0 p STARTED     2   6.8kb 192.168.5.55  node-1
.kibana_task_manager            0 r STARTED     2   6.8kb 192.168.5.56  node-2
.kibana_1                       0 p STARTED     4  19.8kb 192.168.5.56  node-2
.kibana_1                       0 r STARTED     4  19.8kb 192.168.5.100 node-3
.monitoring-kibana-6-2023.05.15 0 p STARTED  2194 747.9kb 192.168.5.55  node-1
.monitoring-kibana-6-2023.05.15 0 r STARTED  2194 680.4kb 192.168.5.100 node-3
.monitoring-kibana-6-2023.05.12 0 p STARTED  1180   420kb 192.168.5.56  node-2
.monitoring-kibana-6-2023.05.12 0 r STARTED  1180   420kb 192.168.5.100 node-3
.monitoring-es-6-2023.05.15     0 p STARTED 28065    14mb 192.168.5.55  node-1
.monitoring-es-6-2023.05.15     0 r STARTED 28065    14mb 192.168.5.56  node-2
.monitoring-es-6-2023.05.12     0 p STARTED 11490   5.6mb 192.168.5.55  node-1
.monitoring-es-6-2023.05.12     0 r STARTED 11490   5.6mb 192.168.5.100 node-3

P 表示primar shard 主分片,前面的数字表示分片数量
R 表示 replica shard 副本分片

5.6 验证ES集群故障转移

注意实心星号的是主节点,我们尝试将 192.168.5.55 节点服务关闭,验证,主节点是否进行重新选举,并再次启动 192.168.5.55,看看是否变成候选节点:
[root@localhost ~]# ps -ef | grep /usr/local/es/ela
[root@localhost ~]# kill -9 3184

[es@localhost config]$ curl 192.168.5.56:9200/_cat/nodes
192.168.5.56  21 96 1 0.03 0.02 0.05 mdi - node-2
192.168.5.100 24 95 1 0.30 0.10 0.07 mdi * node-3
发现 192.168.5.100变成了主节点,然后启动 192.168.5.55,验证其是否变成了候选节点
[root@localhost ~]# curl 192.168.5.55:9200/_cat/nodes
192.168.5.100 27 94 2 0.08 0.08 0.07 mdi * node-3
192.168.5.55  26 96 1 0.97 0.25 0.12 mdi - node-1
192.168.5.56  22 96 1 0.03 0.03 0.05 mdi - node-2

6. 配置kibana监控集群

6.1 修改配置文件

安装过程请查看目录第三部分

修改配置kibana配置文件
[root@localhost ~]# vim /usr/local/kibana-6.8.20-linux-x86_64/config/kibana.yml
7 server.host: "0.0.0.0"  //服务器主机地址
//集群ip端口号
28 elasticsearch.hosts: ["http://192.168.5.55:9200","http://192.168.5.56:9200",
"http://192.168.5.100:9200"]
[root@localhost ~]# cd /usr/local/kibana-6.8.20-linux-x86_64/bin/
[root@localhost bin]# ./bin/kibana &

6.2 访问

成功监控到整个集群
Elasticsearch数据库

6.3 验证分片

三个节点正常的时候下面显示是16个分片
Node1:5个
Node2: 6个
Node3:5个
Elasticsearch数据库
模拟故障:
现在把node1节点关掉,正常应该是node1节点的五个分片会重新分配给剩下的两个节点,使总数到达16个分片

[root@localhost kibana-6.8.20-linux-x86_64]# netstat –tunlp
[root@localhost kibana-6.8.20-linux-x86_64]# kill -9 2036

Elasticsearch数据库
验证成功,可以看到node1挂了,剩下的两个节点各自分配了8个分片文章来源地址https://www.toymoban.com/news/detail-440092.html

到了这里,关于Elasticsearch数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【es数据库】python 使用Elasticsearch数据库

    Elasticsearch是一个开源的高扩展性搜索引擎,它可以快速地存储、搜索和分析大量的数据。 使用Python语言和Elasticsearch,可以轻松地创建和操作“数据库”和“数据库表”,而且具备分布式和高扩展性的特点,适用于大规模数据存储与搜索场景。 ES是一种文档数据库,它并不像

    2024年02月12日
    浏览(42)
  • ElasticSearch与数据库集成

    Elasticsearch 是一个开源的搜索和分析引擎,基于 Lucene 库,用于实时搜索和分析大规模文本数据。它可以将数据存储在内存中,以提供快速、实时的搜索和分析功能。Elasticsearch 通常与数据库集成,以提供更高效的搜索和分析功能。 在现代应用程序中,数据量越来越大,传统的

    2024年02月20日
    浏览(40)
  • Elasticsearch的数据库与数据仓库整合

    Elasticsearch是一个开源的搜索和分析引擎,基于Lucene库,具有实时搜索、文本分析、数据聚合等功能。在大数据时代,Elasticsearch在数据库和数据仓库领域得到了广泛的应用。本文将从以下几个方面进行讨论: 背景介绍 核心概念与联系 核心算法原理和具体操作步骤以及数学模

    2024年02月21日
    浏览(44)
  • Elasticsearch:向量数据库的真相

    通过工作示例了解什么是向量数据库、它们如何实现 “相似性” 搜索以及它们可以在明显的 LLM 空间之外的哪些地方使用。除非你一直生活在岩石下,否则你可能听说过诸如生成式人工智能和大型语言模型(LLM)之类的术语。 除此之外,你很有可能听说过向量数据库,它为

    2024年02月04日
    浏览(44)
  • Elasticsearch的图数据库&图数据处理

    Elasticsearch是一个开源的搜索和分析引擎,它基于Lucene库构建,具有高性能、可扩展性和实时性。Elasticsearch的核心功能包括文本搜索、数据聚合、实时分析等。 图数据库是一种特殊类型的数据库,它用于存储和管理网络结构的数据。图数据库使用图形结构来表示数据,其中数

    2024年02月21日
    浏览(50)
  • Spring Data Elasticsearch - 在Spring应用中操作Elasticsearch数据库

    Spring Data Elasticsearch为文档的存储,查询,排序和统计提供了一个高度抽象的模板。使用Spring Data ElasticSearch来操作Elasticsearch,可以较大程度的减少我们的代码量,提高我们的开发效率。 要使用Elasticsearch我们需要引入如下依赖: 还需要在配置文件中增加如下配置 类比于MyBat

    2024年02月14日
    浏览(47)
  • 如何使用 Elasticsearch 作为向量数据库

    在今天的文章中,我们将很快地通过 Docker 来快速地设置 Elasticsearch 及 Kibana,并设置 Elasticsearch 为向量搜索。 在上面,我们指定了 elasic 超级用户的密码为 password。这在下面将要使用到。 验证容器是否已启动并正在运行: 从上面我们可以看到 Elasticsarch 及 Kibana 已经完全运行

    2024年04月17日
    浏览(81)
  • 【ES数据库】Elasticsearch安装使用

    Elasticsearch 和 MongoDB/Redis 类似,是非关系型数据库,从索引文档到文档能被搜索到只有一个轻微的延迟,是采用Restful API标准的可扩展和高可用的实时数据分析的全文搜索工具 Elastic Search 的实现原理是,利用内置分词器(Analyzer)对数据库文本进行分词,将解析出的和数据

    2024年02月04日
    浏览(42)
  • ElasticSearch数据库导出数据——(以6.8.2为例)

    我现在是有两套ES环境,一套在内网(有数据),一套在外网(没数据)。 由于开发测试需要,要将内网的数据导出到外边来进行测试。 一、预先准备 1.安装node和npm 2.安装elasticdump 外网机器在线安装 内网机器离线安装 外网准备 验证成功之后,由于内网不能在线安装,需要

    2024年02月16日
    浏览(191)
  • Elasticsearch与关系型数据库集成

    Elasticsearch是一个开源的搜索和分析引擎,基于Lucene库开发,具有高性能、可扩展性和实时性等特点。关系型数据库则是一种结构化数据库管理系统,以表格形式存储数据,支持SQL查询语言。在现实应用中,Elasticsearch与关系型数据库往往需要进行集成,以实现更高效、灵活的

    2024年02月20日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包