1 ES定义
ES=elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
ELK= elasticsearch + Logstash + kibana
elasticsearch:后台分布式存储以及全文检索
logstas:日志加工、“搬运工”
kibana:数据可视化展示。
ELK架构为数据分布式存储、可视化查询和日志解析创建了一个功能强大的管理链。 三者相互配合,取长补短,共同完成分布式大数据处理工作。
2 ES必要的插件
必要的Head:(web界面)、、IK(中文分词)、graph等插件的详细安装和使用。
3 ES数据架构的主要概念(与关系数据库Mysql对比)
(1)关系型数据库中的数据库(DataBase),等价于ES中的索引(Index)
(2)一个数据库下面有N张表(Table),等价于1个索引Index下面有N多类型(Type),
(3)一个数据库表(Table)下的数据由多行(ROW)多列(column,属性)组成,等价于1个Type由多个文档(Document)和多Field组成。
(4)在一个关系型数据库里面,schema定义了表、每个表的字段,还有表和字段之间的关系。 与之对应的,在ES中:Mapping定义索引下的Type的字段处理规则,即索引如何建立、索引类型、是否保存原始索引JSON文档、是否压缩原始JSON文档、是否需要分词处理、如何进行分词处理等。
(5)在数据库中的增insert、删delete、改update、查search操作等价于E
名词解释:
Cluster:集群。
Index:索引,Index相当于关系型数据库的DataBase。
Type:类型,这是索引下的逻辑划分,一般把有共性的文档放到一个类型里面,相当于关系型数据库的table。
Document:文档,Json结构,这点跟MongoDB差不多。
Shard、Replica:分片,副本。
分片有两个好处,一个是可以水平扩展,另一个是可以并发提高性能。在网络环境下,可能会有各种导致分片无法正常工作的问题,所以需要有失败预案。ES支持把分片拷贝出一份或者多份,称为副本分片,简称副本。副本有两个好处,一个是实现高可用(HA,High Availability),另一个是利用副本提高并发检索性能。
分片和副本的数量可以在创建index的时候指定,index创建之后,只能修改副本数量,不能修改分片。
在linux 系统安装ElasticSearch-6.3.2最新版本,也适合6.x 系列版本做参考
前提先在linux 安装好jdk1.8
创建用户
从5.0开始,ElasticSearch 安全级别提高了,不允许采用root帐号启动,所以我们要添加一个用户
1 创建 elasticsearch 用户组
1
|
[root @localhost ~]# groupadd elasticsearch |
2 创建用户 es 并设置密码为es
1
2
|
[root @localhost ~]# useradd es [root @localhost ~]# passwd es |
3 用户es 添加到 elasticsearch 用户组
1
|
[root @localhost ~]# usermod -G elasticsearch es |
4 设置sudo权限
1
|
[root @localhost ~]# visudo |
1
2
3
4
5
|
在root ALL=(ALL) ALL 一行下面 添加es用户 如下: es ALL=(ALL) ALL 添加成功保存后切换到es用户操作 |
1
2
|
[root @localhost ~]# su es [es @localhost root]$ |
下载安装包
在/usr/local/src 目录下 下载elasticsearch ,并解压 tar.gz
[es@localhost src]$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.tar.gz
1
|
[es @localhost src]$ tar -xvf elasticsearch- 6.3 . 2 .tar.gz |
1
|
|
1
|
把解压的文件移动到 /usr/local |
1
|
[es @localhost src]$ sudo mv elasticsearch- 6.3 . 2 /usr/local |
更改elasticsearch-6.3.2 文件夹以及内部文件的所属用户为es, 用户组组为elasticsearch,-R表示逐级
1
|
[es @localhost local]$ sudo chown -R es:elasticsearch elasticsearch- 6.3 . 2 |
ElasticSearch 配置
elasticsearch.yml 修改
1
|
[es @localhost elasticsearch- 6.3 . 2 ]$ vim config/elasticsearch.yml |
修改内容(没有就添加):
cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
#因为Centos6不支持SecComp,而ES默认bootstrap.system_call_filter为true进行检测
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
修改/etc/sysctl.conf
切换回root 用户 执行
1
|
vim /etc/sysctl.conf |
在文件最后面添加内容:
vm.max_map_count=262144
保存退出后,使用sysctl -p 刷新生效
[root@localhost ~]# sysctl -p net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 vm.max_map_count = 262144 [root@localhost ~]#
修改文件/etc/security/limits.conf
1
|
vim /etc/security/limits.conf |
添加如下内容:
1
2
3
4
5
|
* hard nofile 65536 * soft nofile 65536 * soft nproc 2048 * hard nproc 4096 |
启动elasticesearch 可能还会报如下错误
max number of threads [1024] for user [lish] likely too low, increase to at least [4096]
解决:切换到root用户,进入limits.d目录下修改配置文件。
vi /etc/security/limits.d/90-nproc.conf
修改如下内容:
* soft nproc 1024
#修改为
* soft nproc 4096
启动 elasticsearch
完成上面配置修改后,切换到es 用户,目录切换到 elasticsearch 安装目录下执行
1
|
[es @localhost elasticsearch- 6.3 . 2 ]$ bin/elasticsearch |
在浏览器输入localhost:9200 验证是否启动成功,如果浏览器输出如下信息,代表安装启动成功
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
{ "name" : "node-1" , "cluster_name" : "elasticsearch" , "cluster_uuid" : "8okSnhNzRr6Xo233szO0Vg" , "version" : { "number" : "6.3.2" , "build_flavor" : "default" , "build_type" : "tar" , "build_hash" : "053779d" , "build_date" : "2018-07-20T05:20:23.451332Z" , "build_snapshot" : false , "lucene_version" : "7.3.1" , "minimum_wire_compatibility_version" : "5.6.0" , "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" } |
如果启动过程中出现异常信息,请根据信息百度相关问题,下面是我启动过程遇到的错误信息并附上解决方案
1
|
<em id= "__mceDel" > </em> |
使用参考阮一峰:http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html