Elasticsearch简介
Elasticsearch(后续简称ES) 是一个实时的分布式存储、搜索、分析的引擎。ES基于java开发,使用Lucene(全文检索引擎工具)作为其核心来实现所有索引和搜索功能,但是它的目的是通过简单的RESTful API来隐藏Lucene,从而使搜索变得简单。
Elasticsearch生态
Elastic公司基于ES,提供了四大解决方案:搜索、日志分析、指标分析、安全分析。
其中以下几个事件需要你了解:
Elasticsearch使用场景
将系统日志、应用日志收集起来存储到es里,然后通过es来分析和搜索这些日志,后面我们会将日志采集分析平台ELK,其中就用到了es。
使用Elasticsearch和Kibana灵活的运用数据可视化运维看板,并在看板上展示主机信息,通过具体指标来监测主机状态,从而达到监控的目的。
可通过Elasticsearch分析、检索海量历史日志,高效地完成安全审计工作。可以借助Elasticsearch的数据响应性能,快速感知系统中实时发生的事件,实时检索关键词,及时规避风险。
如果数据量很大(PB级),使用关系型数据库(如MySQL)去搜索关键字就非常慢,甚至说系统会崩溃,而如果使用es来存储数据,并做搜索速度会非常快。这是es的特性。
Elasticsearch相关概念
索引可以理解成是一类文档的集合,它是存放文档的容器。 有人把索引比喻成关系型中的库的概念,但我感觉更像是表的概念。 Mapping定义文档字段的类型。 Setting定义不同的数据分布,比如定义有多少分片、多少副本。
之前的版本中,索引和文档中间有这个Type的概念,每个索引下可以建立多个类型,文档存储时需要指定index和type。从6.0.0开始已经被废弃,7.0开始单个索引中只能有一个类型_doc。
弃用该概念的原因:
我们虽然可以通俗地去理解Index比作 SQL 的 Database,Type比作SQL的Table。但这并不准确,因为如果在SQL中,Table 之前相互独立,同名的字段在两个表中毫无关系。但是在ES中,同一个Index 下不同的 Type 如果有同名的字段,他们会被 Luecence 当作同一个字段 ,并且他们的定义必须相同。所以我觉得Index现在更像一个表,而Type字段并没有多少意义。在7.0开始,一个索引只能建一个Type为_doc,而在8.x版本里已经给隐藏了。
类似于关系型数据库某个表里面具体一行一行的数据记录。文档是所有可搜索数据的最小单元。 比如,将日志记录进Es时,每一条日志就是一个文档。文档会被序列化成JSON格式。JSON对象由字段组成,每个字段都有对应的字段类型(如,字符串、数值、布尔、日期、二进制、范围),以下就是一个文档的元数据:
当使用Es集群时,一份完整的数据会分散开存到集群各个节点上,每个节点存一部分,这就是所谓的数据分片。当然,如果使用单机模式,也可以做分片,相当于是将一份数据分割开了存同一台机器上,单节点多分片没有啥意义,当然,如果想后期由单机改为集群,那有必要搞多分片。
分片的存在解决了数据水平扩容,分片让Es可以存储巨量(上PB)的数据。主分片数在创建索引时,就被指定了,一旦创建,无法更改,除非进行Reindex。
这个副本指的是数据分片的副本,为了保证数据高可用,需要设置副本,这个副本可以是多个,当一份数据出现异常,还有副本可以使用。在Es内部,是可以做到自动故障转移的,就是说一旦数据有问题,那么就会让其中一份副本顶上。
Elasticsearch单机部署
1)修改服务器参数
##修改系统参数,调整nofile以及noproc cat >> /etc/security/limits.conf <> /etc/sysctl.conf ##使内核参数生效 sysctl -p
2)es下载地址
3)通过yum安装es(8.x版本)
导入GPG Key
rpm --import
设置yum仓库
cat > /etc/yum.repos.d/es.repo <
yum安装es
yum install --enablerepo=elasticsearch elasticsearch
关闭ssl
vi /etc/elasticsearch/elasticsearch.yml ##修改如下 xpack.security.http.ssl: enabled: false
启动服务
systemctl start elasticsearch
设置为开机自启
systemctl enable elasticsearch
查看端口
netstat -lntp |grep java #两个端口9200 9300,其中9200为RESTful接口访问端口,9300为集群通信端口
重置密码
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
访问9200端口
curl -u elastic:'上一步生成的密码' http://127.0.0.1:9200/4)安装Kibana实现可视化
Kibana早期是为Logstash开发的可视化工具,于2013年被Elastic公司收购。
前面安装Es时,配置的yum仓库里就带有Kibana了,所以可以直接yum安装:yum install --enablerepo=elasticsearch kibana
在ES重置kibana-system用户密码
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u kibana_system
编辑Kibana配置文件
vi /etc/kibana/kibana.yml #修改如下参数 server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://192.168.222.101:9200"] elasticsearch.username: "kibana_system" elasticsearch.password: "K5L7b7JBgtC_dXmbmI2V" i18n.locale: "zh-CN" ##支持中文界面
启动服务
systemctl start kibana systemctl enable kibana
浏览器访问 http://ip:5601
可以导入样例数据,如下图
另外,可以访问开发工具,来执行常用API操作:
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !