ES 7.4部署安装以及基本概念介绍

一、安装部署

1.1 安装Elasticsearch

1、下载并解压安装包

# es官网:https://www.elastic.co/cn/downloads/elasticsearch

# 下载
# wget -c https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.0-linux-x86_64.tar.gz
# 解压
# tar xf elasticsearch-7.4.0-linux-x86_64.tar.gz

2、修改系统文件

# 修改limits.conf文件
# vi /etc/security/limits.conf
work soft nofile 65536
work soft nproc 4096
work hard nofile 131072
work hard nproc 4096
soft nofile 65536
soft nproc 4096
hard nofile 131072
hard nproc 4096

# 修改sysctl.conf文件
# vi /etc/sysctl.conf
vm.max_map_count=655360
# 使配置文件生效
# sysctl -p

3、修改es配置文件

# cd /opt/Elasticsearch7.4/elasticsearch-7.4.0
# vi ./config/elasticsearch.yml

#es集群名
cluster.name: sansi-es
#当前节点名
node.name: node-1
node.attr.rack: r1
#节点数据、日志目录
path.data: /data/es7_1/data
path.logs: /data/es7_1/logs
#开放地址
network.host: 0.0.0.0
#http访问端口,默认9200
http.port: 9200
#集群初始化时master-eligible节点
#本次测试环境只启动了一个node,所以该参数只配置了node-1
cluster.initial_master_nodes: ["node-1"]

4、创建es用户以及目录授权

# useradd es
# password es
# id es
uid=1001(es) gid=1002(es) 组=1002(es)

# 创建es节点对应的数据、日志目录,并进行授权
# mkdir -p /data/es7_1/{data,logs}
# chown -R es:es /data/es7_1/

5、启动es

1)单机单节点启动

es启动使用root用户会报错,必须使用我们之前为es单独创建的用户下启动es程序。

单机单节点启动时,只需要到该es安装目录下直接启动就好,es会根据配置文件启动相应的进程,-d表示后台启动。

# su es
# ./bin/elasticsearch -d

2)单机多节点启动

若开发测试环境需要单机启动多个节点,启动es时特别指定以下具体参数即可

# su es
# ./bin/elasticsearch -E node.name=node-1 -E cluster.name=sansi-es -E path.data=/data/es7_1/data/ -E http.port=9200 -d
# ./bin/elasticsearch -E node.name=node-2 -E cluster.name=sansi-es -E path.data=/data/es7_2/data/ -E http.port=9202 -d

6、检查是否启动成功

1)端口检查

# netstat -tlnp | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      4668/java

2)url访问检查

使用浏览器访问:http://${your_ip}:9200/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eCmMbWzV-1595143079216)(http://note.youdao.com/yws/res/60338/A9275108CC3A49C9B84F69E52243D4D2)]

获取当前es集群中的节点信息,使用浏览器访问:http://${your_ip}:9200/_cat/nodes

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lm9kYGhL-1595143079218)(http://note.youdao.com/yws/res/60345/BE9F955FA96E42ABB009A47D2953A52F)]

1.2 安装 Kibana

1、下载并解压安装包

#官网:https://www.elastic.co/cn/kibana
#下载:wget -c https://www.elastic.co/cn/downloads/kibana

2、修改kibana配置文件

# cat ./config/kibana.yml  | egrep -v "^#|^$"
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://${your_ip}:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN"

3、启动kibana

# cd /opt/Elasticsearch7.4/kibana-7.4.0-linux-x86_64
# 安装Sense插件
# ./bin/kibana plugin --install elastic/sense 
# 启动kibana
# ./bin/kibana

4、检查是否启动成功

浏览器访问:http://124.70.209.222:5601/app/kibana

在这里插入图片描述

二、基本概念

2.1 文档

es是面向文档的,文档是可搜索的最小单位。每个文档以json的格式进行存储,json的对象就是该文档的每个字段。每个字段有各自的数据类型。

每个文档都有一个unique id保证每条文档记录唯一,可自己定义也可以由es自动生成。

GET users/_doc/1                //查看索引内id=1的文档信息

{
  "_index" : "users",           //索引名称
  "_type" : "_doc",             //索引类型,7.0以后默认都是_doc
  "_id" : "1",                  //文档id
  "_version" : 12,              //版本号
  "_seq_no" : 28,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {                 //文档内原始数据
    "name" : "aa",
    "auto_inc" : "11"
  }
}

2.2 索引

索引其实就是文档的一个集合。一个索引主要包含以下几部分信息:

别名 : 索引的别名

mapping : 用来定义包含的文档的字段名和字段类型

setting : 用来定义索引的数据分布(shard,物理空间上的分片)

GET kibana_sample_data_logs         //查看索引信息

{
  "kibana_sample_data_logs" : {
    "aliases" : { },                //别名
    "mappings" : {                  //索引内包含的字段信息,字段名以及对应的数据类型
      "properties" : {
        "@timestamp" : {
          "type" : "alias",
          "path" : "timestamp"
        },
        "agent" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        ......
        "utc_time" : {
          "type" : "date"
        }
      }
    },
    "settings" : {                  //索引的数据分布,分片设置
      "index" : {
        "number_of_shards" : "1",
        "auto_expand_replicas" : "0-1",
        "provided_name" : "kibana_sample_data_logs",
        "creation_date" : "1595066904424",
        "number_of_replicas" : "0",
        "uuid" : "hbYnWf1DTF2g15kQpEFXSA",
        "version" : {
          "created" : "7040099"
        }
      }
    }
  }
}

索引相关信息查询的命令:

#_cat indices APi 
#查看index
GET /_cat/indices/kibana*?v&s=index

#查看状态为绿色的,以为indices开头的索引
GET /_cat/indices?v&health=green

#按照文档个数排序
GET /_cat/indices?v&s=docs.count:desc

#查看具体字段
GET /_cat/indices/kibana*?pri&v&h=helth,index,pri,rep,docs.count,mt

#索引内存占用
GET /_cat/indices?v&h=i,tm&s=tm:desc

2.3 节点

在es中,每个节点其实本质上就是一个java进程,节点本身也有较多的角色分类,每类节点对应不同的功能与业务场景。生产环境建议1台机器启动一个节点,每台机器的节点仅负责对应的工作,避免多节点之间的资源争用。

每个节点默认就是一个master eligible节点,master-eligible可以参与选主流程,成为master节点。每个节点上都存储了集群的状态信息,只有在master中才能修改集群的状态信息
(node.master=true)

节点/角色 介绍
data node 负责保存数据的节点,设置node.data=true
coordinating node 负责接收客户端请求,并将请求分发到对应的节点,最终汇总数据将接回返回给客户端。每个节点都是一个coordinating node的职责
hot node 存储热数据的节点,查询频繁的数据可以放在hot node上
warm node 其设备相对hot node可以相对较差,主要存储一些历史数据,查询不频繁的数据
machine learning node 负责跑机器学习的job,用来做异常检测。设置node.ml=true, 需要enable x-pack
get _cat/nodes              //查看当前集群的所有节点信息,若加?v表示显示每个字段含义
192.168.0.4 46 90 1 0.00 0.01 0.05 dilm * node-1


GET /_nodes/node-1                  //查看指定节点信息
GET /_cat/nodes?v                   //查看当前集群的所有节点信息
GET /_cat/nodes?v&h=id,ip,port,v,m  //查看指定节点的指定信息

2.4 分片

1、主分片(primary shard)

负责客户端的查询请求和索引请求

通过指定索引的主分片数,可以将数据分布到集群的多个节点上,从而达到了水平扩展的能力

每个索引的主分片数需要在创建索引时指定,且后续不允许修改,除非reindex。7.0开始每个索引的主分片数默认为1,若实际业务中索引的数据量较大,建议在创建索引时提前预估设置好主分片数。

2、副本(replica shard)

可以承担客户端的查询请求,不支持索引请求

副本分片其实就是主分片的数据备份,当某个节点某个分片损坏或丢失时可以从副本中恢复,一定程度上达到了ES高可用的能力

副本分片数可以动态调整,增加副本分片一定程度上提高额系统的可用性

3、分片数的设置

7.0开始,主分片数默认设置为1,一定程度上解决了over-sharding的问题。索引主分片数需要合理设计,过大或者过小都有一定的缺陷。

  • 主分片数过小:

无法充分利用到多个node的资源,且后续无法动态水平扩展。

若单分片数据量过大,reindex时将非常耗时

  • 主分片数过大:(over-sharding)

影响搜索结果的相关性打分

影响统计结果的准确性

当节点上存在过多分片,也会导致资源浪费,影响性能

get _cat/shards                 //查看各个索引的数据分布的分片信息

.kibana_task_manager_1   0 p STARTED        2 13.1kb 192.168.0.4 node-1
.kibana_sansi_1          0 p STARTED        0   283b 192.168.0.4 node-1
users                    0 p STARTED        8 26.5kb 192.168.0.4 node-1
users                    0 r UNASSIGNED                          
.apm-agent-configuration 0 p STARTED        0   283b 192.168.0.4 node-1
.kibana_1                0 p STARTED       45 86.1kb 192.168.0.4 node-1
kibana_sample_data_logs  0 p STARTED    14074 11.2mb 192.168.0.4 node-1
test                     0 p STARTED        2  4.6kb 192.168.0.4 node-1
test                     0 r UNASSIGNED                          

2.5 es集群

ES集群的特点:

  • 数据水平扩展(数据通过shard分布在多个节点上)
  • 高可用(默认2副本,通过副本分片实现)
GET _cluster/health             //查看集群状态

{
  "cluster_name" : "sansi-es",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 7,
  "active_shards" : 7,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 2,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 77.77777777777779
}

green表示主分片和副本分片分配均正常
yellow表示主分片分配正常,副本分片未正常分配
red表示主分片和副本分片均未正常分配

猜你喜欢

转载自blog.csdn.net/weixin_37692493/article/details/107445745