最近因工作原因,和ES(Elasticsearch)接触的比较多;ES之前了解过,不怎么熟悉,故打算系统学习之。
按照自己的学习惯例,一是了解主要概念,二是动手安装一遍。
故,本文大纲为:
1. 概念理解:
1) ES是什么?
2) ES发展史
3) ES市场成熟度
2. 安装部署
1) Linux下如何安装
2) Docker方式如何安装
Contents:
一、ES概念理解:
1. ES是什么(Elasticsearch)?
Elasticsearch 是由 Elastic 公司创建。它的代码位于 GitHub - elastic/elasticsearch: Free and Open, Distributed, RESTful Search Engine。
目前,Elasticsearch 是一个免费及开放(free and open)的项目。
Elastic 公司也拥有 Logstash 及 Kibana 开源项目,三个项目形成了 ELK 软件栈,形成了一个强大的生态圈。其中:
1. Logstash 负责数据的采集,处理(丰富数据,数据转换等);
2. Kibana 负责数据展示,分析,管理,监督及应用;
3. Elasticsearch 处于最核心的位置,它可以帮对数据进行快速地搜索及分析。
Elasticsearch是一个基于Lucene的一个开源的高扩展的分布式全文检索引擎,基于RESTful web接口,隐藏了Luncee的复杂性,从而让全文搜索变得简单;可近乎实时的存储、检索数据,可扩展性强,可处理PB级别的数据。
理解ES的关键在于理解lucene的基本原理:
Lucene是一种高性能、可伸缩的信息搜索(IR)库,在2000年开源,最初由鼎鼎大名的Doug Cutting开发,是基于Java实现的高性能的开源项目。Lucene采用了基于倒排表的设计原理,可以非常高效地实现文本查找,在底层采用了分段的存储模式,使它在读写时几乎完全避免了锁的出现,大大提升了读写性能。
关于lucene的原理,可参见如下链接,这里不再赘述:
https://www.jianshu.com/p/28fb017be7a7
官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。
Elasticsearch以上大致了解了ES是什么?
接下来再说一下ES的发展史,了解其发展史,可帮助我们知道所以然和不然。
4. ES发展史
Elasticsearch是一个基于 Apache Lucene (TM)的开源搜索引擎。无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
在 1999 年,Doug Cutting 创建了一个叫做 Lucene 的开源项目:
1. 一个完全用 Java 编写的搜索引擎库
2. 截止2005年,是一个顶级的 Apache 开源项目
3. 提供强大的全文搜索功能
但Lucene 只是一个库,本身并不提供高可用性及分布式部署。想要发挥其强大的作用,需使用 Java 并要将其集成到应用中。而且Lucene 非常复杂,需要深入的了解检索相关知识来理解它是如何工作的,上手比较困难。
大家这里可以类比内存溢出和释放来理解。
在 2004 年, Shay Banon也就是现在 Elastic 的 CEO,开发了一个叫做 Compass 的开源项目:
1. 构建于 Lucence 之上
2. 目的是使得 Lucene 搜索更容易集成到 Java 应用中去
3. 可扩展性变得尤为重要
在 2010 年,Shay 完全重新编写了 Compass 以实现如下的两个目的:
1. 设计之初,就使用分布式部署设计
2. 可方便地使用其它的语言进行对接调用
Shay 最终把这个项目称之为 Elasticsearch,并于2010年10月发布与 github 上。
不过,Elasticsearch 不仅仅是 Lucene 和全文搜索引擎,它还提供:
1. 分布式的实时文件存储,每个字段都被索引并可被搜索
2. 实时分析的分布式搜索引擎
3. 可以扩展到上百台服务器,处理 PB 级结构化或非结构化数据
上述功能被集成到一台服务器,应用可以通过简单的 RESTful API、各种语言的客户端甚至命令行与之交互。上手 Elasticsearch 非常简单,它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。
Elasticsearch 的特点是它提供了一个极速的搜索体验。这源于它的高速(speed)。相比较其它的一些大数据引擎,Elasticsearch 可以实现秒级的搜索;Elasticsearch 的 cluster 是一种分布式的部署,极易扩展(scale)。
小结:
Elasticsearch 是使用 Java 编写并使用 Lucene 来建立索引并实现搜索功能,通过简单连贯的 RESTful API 让全文搜索变得简单并隐藏 Lucene 的复杂性;其是实时分析的分布式搜索引擎,可以扩展到上百台服务器,处理 PB 级结构化或非结构化数据。
5. ES市场认可度
Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
可以看出5月份的目前Elasticsearch排名为第七名,Solr的DB-Engines排名为第29名。
DB-Engines官网链接:
https://db-engines.com/en/ranking
二、动手安装
了解了ES的概念和发展史,接下来就该实操起来练练手,所谓烂笔头好过好记性。
Elasticsearch单机版部署
Elasticsearch版本
Elasticsearch版本:8.1.3
Kibana版本:8.1.3
操作系统:
麒麟v10 sp2
[root@192 ~]# cat /proc/version
Linux version 4.19.90-24.4.v2101.ky10.x86_64 (KYLINSOFT@localhost.localdomain) (gcc version 7.3.0 (GCC)) #1 SMP Mon May 24 12:14:55 CST 2021
CPU芯片信息:
[root@192 ~]# lscpu
架构: x86_64
CPU 运行模式: 32-bit, 64-bit
字节序: Little Endian
Address sizes: 45 bits physical, 48 bits virtual
CPU: 1
在线 CPU 列表: 0
每个核的线程数: 1
每个座的核数: 1
座: 1
NUMA 节点: 1
厂商 ID: AuthenticAMD
CPU 系列: 23
型号: 96
型号名称: AMD Ryzen 7 4800H with Radeon Graphics
步进: 1
CPU MHz: 2894.561
BogoMIPS: 5789.12
超管理器厂商: VMware
虚拟化类型: 完全
L1d 缓存: 32 KiB
L1i 缓存: 32 KiB
L2 缓存: 512 KiB
L3 缓存: 4 MiB
NUMA 节点0 CPU: 0
具体操作步骤如下:
1. 解压缩
[root@192 es]# gunzip elasticsearch-8.1.3-linux-x86_64.tar.gz
-rw-r--r-- 1 root root 1101649920 5月 3 18:41 elasticsearch-8.1.3-linux-x86_64.tar
继续解压缩
[root@192 es]# tar -xvf elasticsearch-8.1.3-linux-x86_64.tar
[root@192 es]# ll
总用量 1075832
drwxr-xr-x 9 root root 155 4月 19 16:19 elasticsearch-8.1.3
-rw-r--r-- 1 root root 1101649920 5月 3 18:41 elasticsearch-8.1.3-linux-x86_64.tar
2. 创建用户
基于安全可控的原则,Elasticsearch 不允许 root 用户直接运行;
所以要创建新用户, root 用户中创建新用户
[root@192 ~]# useradd es #新增 es 用户
[root@192 ~]# passwd es #为 es 用户设置密码
更改用户 es 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
userdel -r es #如果错了,可以删除再加
3. 修改属性(必须要执行)
[root@192 es]# pwd
/es
[root@192 es]# chown -R es:es elasticsearch-8.1.3
4. 修改配置文件
修改/es/elasticsearch-8.1.3/config/elasticsearch.yml 文件 # 加入如下配置
[root@192 config]# vim elasticsearch.yml
cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
注意:
1. 为es设置ip绑定,默认是127.0.0.1,也就是默认只能通过127.0.0.1 或者localhost才能访问,也可配置0.0.0.0全部可以访问
2. 为es设置自定义端口,默认是9200
5. 修改OS层系统参数
修改/etc/security/limits.conf # 在文件末尾中增加下面内容
# 每个进程可以打开的文件数的限制
es soft nofile 65536
es hard nofile 65536
修改/etc/sysctl.conf # 在文件中增加下面内容
# 一个进程可以拥有的 VMA(虚拟内存区域)的数量,默认值为 65536
vm.max_map_count=655360
重新加载
[root@192 security]# sysctl -p
kernel.sysrq = 0
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
kernel.dmesg_restrict = 1
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
vm.max_map_count = 655360
6. 启动软件
使用 ES 用户启动
su - es
cd /es/elasticsearch-8.1.3/bin
#后台启动
./elasticsearch -d
7. 停止es
ps -ef|grep elasticsearch
kill -9 pid
三、设置Elasticsearch密码
步骤1:设置密码
[es@192 bin]$ ./elasticsearch-setup-passwords interactive
******************************************************************************
Note: The 'elasticsearch-setup-passwords' tool has been deprecated. This command will be removed in a future release.
******************************************************************************
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
passwords must be at least [6] characters long
Try again.
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana_system]:
Reenter password for [kibana_system]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
因为需要设置 elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user 这些用户的密码,故这个过程比较漫长,耐心设置。
步骤2:验证
浏览器直接访问https://192.168.220.110:9200,会出现输入用户名、密码的弹窗,输入elastic和密码后,可看到elasticsearch信息。
四、安装kibana
https://www.elastic.co/cn/downloads/kibana
1. 解压缩
[root@192 es]# gunzip kibana-8.1.3-linux-x86_64.tar.gz
[root@192 es]# tar -xvf kibana-8.1.3-linux-x86_64.tar
2. vim config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.220.110:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "elastic"
#kibana中文模式
i18n.locale: "zh-CN"
3. 修改权限
[root@192 es]# chown -R es:es kibana-8.1.3
4. 后台启动
[es@192 ~]$ cd /es/kibana-8.1.3/bin
[es@192 bin]$ nohup ./kibana &
5. web访问 ip:5601
http://192.168.220.110:5601
注意:192.168.220.110为本虚拟机的ip地址
6) 停止kibana
lsof -i:5601查看进程
[es@192 bin]$ lsof -i:5601
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 89939 es 18u IPv4 165188 0t0 TCP *:esmagent (LISTEN)
kill -9进程号
总结:
1. 本文阐述了ES的概念;因为不了解,故动手安装了一遍单机版的ES部署过程;后续集群版则其部署;
2. To be continued.
【参考】
https://blog.csdn.net/UbuntuTouch/article/details/98871531
【参考】
https://db-engines.com/en/ranking
【参考】
https://elasticstack.blog.csdn.net/article/details/113754619
【参考】
https://www.jianshu.com/p/28fb017be7a7
【参考】
https://www.modb.pro/db/394758
【参考】
https://www.elastic.co/guide/index.html文章来源:https://www.toymoban.com/news/detail-406716.html
以下是个人微信公众号,欢迎关注:文章来源地址https://www.toymoban.com/news/detail-406716.html
到了这里,关于知识篇 | 麒麟v10 下安装Elasticsearch的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!