Elasticsearch入门简介

描述

Elasticsearch简介

Elasticsearch(后续简称ES) 是一个实时的分布式存储、搜索、分析的引擎。ES基于java开发,使用Lucene(全文检索引擎工具)作为其核心来实现所有索引和搜索功能,但是它的目的是通过简单的RESTful API来隐藏Lucene,从而使搜索变得简单。

Elasticsearch生态

Elastic公司基于ES,提供了四大解决方案:搜索、日志分析、指标分析、安全分析。

JSON

其中以下几个事件需要你了解:

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对象由字段组成,每个字段都有对应的字段类型(如,字符串、数值、布尔、日期、二进制、范围),以下就是一个文档的元数据:

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

可以导入样例数据,如下图

JSON

JSON

另外,可以访问开发工具,来执行常用API操作:

JSON

JSON






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分