Elasticsearch 使用

这一系列文章是基于 Elastcsearch7.9.3 版本的

一、基本概念

Elasticsearch,简称 ES,它是一个基于 Lucene 实现的分布式全文检索引擎,可以扩展至上百台服务器集群,处理 PB 量级的数据,使用 ES 可以近乎实时的完成大量数据的存储与检索。使用上也很方便,通过一些简单的 RESTful API 就可以操作 ES,当然也可以和 Java 整合在一起去使用,这些后边都会介绍到。更多花里胡哨的介绍可以自行百度。

上边我们对 ES 有了一个大致上的认识,接下来我们来了解 ES 中的一些基本的概念,加深对 ES 的认识。

初学者直接看一大堆名词容易懵圈,我们可以类比MySql中的一些概念,这样就更容易理解了,先看下边的表格:

MySql Elasticsearch
Database(数据库) Index(索引)
Table(表) Type(类型)
Row(行) Document(文档)
Column(列) Field(字段)
表结构 Mapping(映射)

1、Index(索引)

这个比较好理解,比如我们要存储用户信息,就可以创建一个名为user的索引。可以理解为文档的集合。

2、Type(类型)

类型是在索引的基础上建立的,在 ES6.x 中,一个索引中可以创建多个类型;但从 ES7.x 开始,一个索引中只能创建一个类型,如果我们不指定类型名称,ES 会使用默认的类型名称_doc。其实类型的概念在逐渐的被弱化,理解就行。我们一般可以不指定,使用默认的即可。

3、Document(文档)

文档就是我们存储在 ES 指定索引中的一条 JSON 格式的数据。我们在 ES 中大部分的操作都是基于文档的,这个是重点。

4、Field(字段)

前边说了,文档可以理解成一条 JSON 格式的数据,这里的字段可以简单的理解成 JSON 中的各个字段,但还是有区别的。

5、Mapping(映射)

映射就是用来定义文档中每个字段的属性,例如类型、分词等其它规则约束。关于字段的类型和分词后边会单独介绍。

6、Node(节点)

服务上运行的一个 ES 实例就是一个节点, 一台服务器上可以有多个 ES 节点。

7、Cluster(集群)

将多个运行 ES 的服务器节点组织在一起就是 ES 集群了,如果只有一个节点也算是集群。每个集群都有一个名称(cluster name),作为其唯一标识。同一网段下的节点会根据配置的集群名称决定加入那个集群。

8、Shard(分片)

在 ES7.x版本中,ES默认会为一个索引创建1个主分片和每个主分片对应的1个副本分片,共2个分片;在之前的版本则是默认创建5个主分片和每个主分片对应的1个副本分片,共10个分片。

索引中的数据会被分配到各个主分片上,通常我们都是会搭建 ES 集群,进而这些分片会被分配到不同的节点上,每个分片底层其实是一个 Lucene 索引,可以存储大约21亿个文档。

副本分片是主分片的备份,主分片和备分片不会出现在同一个节点上,防止节点故障导致数据丢失。

二、Elasticsearch 环境搭建

ELK(ElasticSearch+Logstash+Kibana),是目前主流的日志收集分析系统,一般组合使用,但是也可以单独使用,本文讲述其中的ElasticSearch+Kibana两个组件的安装部署步骤,以及其中需要主要的问题。

2.1 下载安装包

1.官网下载地址
https://www.elastic.co/downloads/elasticsearch (当然也可以直接在linux中使用命令下载,但是可能比较慢,我们选择在官网进行下载)
选择对应的系统版本即可

1.png
2.png

2.历史版本下载
这个地址默认是最新的版本,如果想要历史版本,在此页面上找到past releases

点击进去找到想要的版本即可。
本文下载的是6.8.2版本(Elasticsearch和Kibana)
Elasticsearch 6.8.2
Kibana 6.8.2
https://www.elastic.co/cn/downloads/kibana

注意:ES启动需要jdk,我本地已经配置了java8环境变量,不想改动,就用6.X的版本。
如果还没有配置jdk环境变量,则需要先安装jdk,因为ES是基于java以言编写,需要jdk环境。
7.0及以上版本虽然内置了jdk,但是需要java11及以上,我们不适用此版本。

2.2 elasticsearch-6.8.2安装

1.上传安装包至linux
下载好elasticsearch-6.8.2.tar.gz安装包后,上传至linux中,
我放在了/app中,在此目录下使用命令 rz 选择安装包上传即可;

2.解压
上传完成后,使用如下命令解压:

tar -zxvf elasticsearch-6.8.2.tar.gz

3.修改配置文件
进入解压后的config目录,

cd /app/elasticsearch-6.8.2/config

修改elasticsearch.yml配置文件,
找到下面两项配置,开放出来(删除前面的#符号)

network.host: 192.168.212.151
http.port: 9200

4.启动ES
注意,es启动过程中会多次失败,需要修改多处配置文件,注意下文步骤:

a. 进入bin目录

cd /app/elasticsearch-6.8.2/bin

使用如下命令启动(或者./elasticsearch -d ,后台启动模式)

./elasticsearch 

此时会发现启动失败,ES不能使用root用户进行启动。

b. 切换非root用户
添加用户

adduser zss
passwd zss

赋予root权限

  • 方法一:修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL

然后修改用户,使其属于root组(wheel),命令如下:

#usermod -g root tommy

修改完毕,现在可以用tommy帐号登录,然后用命令 su – ,即可获得root权限进行操作。

  • 方法二:修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
tommy   ALL=(ALL)     ALL

然后使用如下命令切换用户

su - zss

用户zss是我之前创建好的;

./elasticsearch,再次启动,发现还有报错:
bootstrap checks failed
max virtual memory areas vm.max_map_count [65530] is

c. 这时候需要修改系统配置文件:

vi /etc/sysctl.conf

添加如下一行内容:

vm.max_map_count=655360

保存后再次启动,./elasticsearch
发现依然报错,
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

d. 这时候还需要修改系统配置文件:

vi /etc/security/limits.conf

添加如下4行:(*号后有空格)

* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096

修改完成后,重启linux系统。然后启动ES即可。

注意:7.0以后版本,可能还需要修改其他配置:
在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:

bootstrap.memory_lock: false
bootstrap.system_call_filter: false

5.访问ES
注意没关闭防火墙的,需要关闭防火墙:
关闭防火墙

systemctl stop firewalld.service

启动完成后,访问地址,显示如下内容表示启动成功。

本文为了快速搭建并验证效果,使用的是单节点方式,如果需要搭建ES集群,参考后文《ElasticSearch系列(五)linux环境中搭建ES集群》

2.3 kibana安装

1.上传安装包并解压
我们已经下载好了安装包,并上传至了
/home/zjq目录下,同样需要先解压,

2.修改配置文件 kibana.yml

vi /home/zjq/kibana-6.8.2-linux-x86_64/config/kibana.yml

将默认配置改成如下:

server.port: 5601
server.host: “ip”
elasticsearch.host: “http:// ip:9200”

注意修改为自己的ip地址。

3.启动kibana
配置文件修改完成后,kibana可以使用root权限直接到,到bin目录下使用如下命令启动
./kibana

4.访问kibana
http://ip:5601/app/kibana
到此,elasticsearch和kibana安装部署完毕。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,192评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,186评论 1 303
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,844评论 0 252
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,471评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,876评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,891评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,068评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,791评论 0 205
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,539评论 1 249
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,772评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,250评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,577评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,244评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,146评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,949评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,995评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,812评论 2 276

推荐阅读更多精彩内容