2019-07-09 《Kibana》安装 -《Elasticsearch 》总结

精彩回顾

mongo

1. sql和nosql区别
2. 应用常见

  • 用户评论
  • 游戏装备
  • 问卷调查
  • 日志

3. mongo特点
4. 安装部署
5. 配置文件
6. CURD增删改查
7. 用户授权

  • agmin root 角色
  • 自定义 read write 角色

8. 副本集

  • 创建目录
  • 修改配置
  • 启动所有节点
  • 初始化副本集配置参数
  • 测试主从复制是否正常
  • 模拟故障转移
  • 扩容和收缩
  • 权重调整和主库降级
  • 仲裁节点

9. 备份恢复

  • 全备
  • oplog备份
  • mysql导出csv,导入到mongo

10. 模拟误删除操作

  • 全备
  • 模拟误删除
  • 备份oplog
  • 切换到local下,查找误删除语句的时间点
  • 处理备份文件
  • 恢复到误操作时间点以前
  • 检验数据是否恢复成功

《Elasticsearch》

1. 什么是搜索
  • 百度
  • 淘宝、京东
2. 如果用数据库做搜索会怎么样
  • 天气
  • 关键词
  • 全表扫描(扫描) 例:老男孩教育 ---> 老%%教育 、 老教育%
3. 什么是全文检索,倒排索引和Lucene
  • 根据匹配的优先级顺序推送搜索的数据信息
4. 什么是Elasticsearch
  • 分布式搜索分析引擎,它被用作全文检索、结构化搜索、分析以及这三个功能的组合
  • Java 开发语言
  • 底层是 Lucene 引擎
5. Elasticsearch 功能

(1)分布式的搜索引擎和数据分析引擎
搜索:站内搜索,商城商品的检索
数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些;新闻网站:最近1个月访问量排名前3的新闻板块

(2)全文检索,结构化检索,数据分析
全文检索:


image.png

(3)对海量数据进行实时的处理

6. Elasticsearch应用场景
  • 网页搜索
  • 新闻搜索
  • 商品标签
  • 日志收集分析展示

高亮、推荐搜索

Stack Overflow(国外的程序员常讨论论坛),IT问题,程序的报错,提交上去,有人会给你讨论和回答,全文检索,搜索相关问题和答案,程序报错了,就会将报错信息粘贴到里面去,搜索有没有对应的答案

GitHub(开源代码管理),搜索上千亿行代码

7. Elasticsearch特点
2019-07-09 《Kibana》安装 -《Elasticsearch 》总结_第1张图片
image.png
  • 适合搜索
  • 全文检索
  • 分析数据
  • 处理海量数据PB
  • 高可用性能分布式搜索引擎数据库
8. Elasticsearch数据格式
2019-07-09 《Kibana》安装 -《Elasticsearch 》总结_第2张图片
image.png

9. 安装部署

2019-07-09 《Kibana》安装 -《Elasticsearch 》总结_第3张图片
image.png
9.1 下载安装软件
# mkdir  -p /data/es_soft/
# cd /data/es_soft/
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.rpm
yum install elasticsearch-6.6.0.rpm -y
# rpm -ivh elasticsearch-6.6.0.rpm

9.2 配置启动
[root@db01 /data/soft]# systemctl daemon-reload

[root@db01 /data/soft]# systemctl enable elasticsearch.service
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.

[root@db01 /data/soft]# systemctl start elasticsearch.service

[root@db01 /data/soft]# systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2019-07-09 10:07:45 CST; 6s ago
     Docs: http://www.elastic.co
 Main PID: 2172 (java)
   CGroup: /system.slice/elasticsearch.service
           ├─2172 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSIn...
           └─2227 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux...

Jul 09 10:07:45 db01 systemd[1]: Started Elasticsearch.
Jul 09 10:07:45 db01 systemd[1]: Starting Elasticsearch...
Jul 09 10:07:45 db01 elasticsearch[2172]: OpenJDK 64-Bit Server VM warning...N
Hint: Some lines were ellipsized, use -l to show in full.

[root@db01 /data/soft]# systemctl is-active elasticsearch.service
active

9.3 检查是否启动成功
ps -ef|grep elastic

[root@db01 /data/soft]# lsof -i:9200
COMMAND  PID          USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    2172 elasticsearch  190u  IPv6  32647      0t0  TCP localhost:wap-wsp (LISTEN)
java    2172 elasticsearch  191u  IPv6  32648      0t0  TCP localhost:wap-wsp (LISTEN)

[root@db01 /data/soft]# curl localhost:9200
{
  "name" : "Hb7dC06",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "G-HeEmHjTw6i--lH_qPJhA",
  "version" : {
    "number" : "6.6.0",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "a9861f4",
    "build_date" : "2019-01-24T11:27:09.439740Z",
    "build_snapshot" : false,
    "lucene_version" : "7.6.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"

9.4 查看配置文件位置
[root@db01 /data/soft]# rpm -qc elasticsearch
/etc/elasticsearch/elasticsearch.yml      # 主配置文件
/etc/elasticsearch/jvm.options            # java虚拟机配置
/etc/init.d/elasticsearch                 # init.d启动脚本
/etc/sysconfig/elasticsearch              # 环境变量相关信息,不需要动
/usr/lib/sysctl.d/elasticsearch.conf      # 环境变量相关
/usr/lib/systemd/system/elasticsearch.service    # systemd启动脚本

9.5 调整配置
[root@db01 ~]# vim /etc/elasticsearch/jvm.options

-Xms1g
-Xmx1g


1.不要超过30G
官网  https://www.elastic.co/cn/

9.6 调整elasticsearch 配置
> 配置文件调整后参数信息
[root@db01 ~]# grep "^[a-z]" /etc/elasticsearch/elasticsearch.yml
node.name: node-1
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 10.0.0.51 
http.port: 9200

> 创建目录并授权
mkdir /data/elasticsearch/ -p 
chown -R elasticsearch:elasticsearch /data/elasticsearch/

> 重新启动
systemctl stop elasticsearch
systemctl start elasticsearch

> 连接报错
[root@db01 ~]# curl 10.0.0.51:9200
curl: (7) Failed connect to 10.0.0.51:9200; Connection refused

> 查看日志报错信息:(内存锁定)
[root@db01 ~]# tail -f /var//log/elasticsearch/elasticsearch.log
[2019-07-09T11:26:31,187][ERROR][o.e.b.Bootstrap          ] [node-1] node validation exception
[1] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked

> 解决办法:(参考 https://www.elastic.co/guide/en/elasticsearch/reference/6.6/setting-system-settings.html#systemd)
systemctl edit elasticsearch
[Service]
LimitMEMLOCK=infinity

systemctl daemon-reload
systemctl stop elasticsearch
systemctl start elasticsearch

> 重新检查:OK
[root@db01 ~]# curl 10.0.0.51:9200
{
  "name" : "node-1",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "jH94pzHNTSqbFdOYFSDvgw",
  "version" : {
    "number" : "6.6.0",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "a9861f4",
    "build_date" : "2019-01-24T11:27:09.439740Z",
    "build_snapshot" : false,
    "lucene_version" : "7.6.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}


============= 启动报错总结:============= 

1.配置文件没有任何修改
2.配置文件没有修改IP地址
3.系统内存只有1个G,启动失败
4.配置文件参数拼写错误,启动失败
5.忘记修改内存锁定,启动失败

9.7 es-head安装部署
[root@db01 ~]# yum install nodejs npm openssl screen -y

[root@db01 ~]# node -v
v6.17.1

[root@db01 ~]# npm -v
3.10.10

# npm install -g cnpm --registry=https://registry.npm.taobao.org
[root@db01 ~]# tar zxvf elasticsearch-head.tar.gz -C /opt/
cd /opt/elasticsearch-head
npm run start & 


修改es配置文件
vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true 
http.cors.allow-origin: "*"

重启es
systemctl stop elasticsearch
systemctl start elasticsearch

网页打开
10.0.0.51:9100
输入
http://10.0.0.51:9200

2019-07-09 《Kibana》安装 -《Elasticsearch 》总结_第4张图片
image.png
2019-07-09 《Kibana》安装 -《Elasticsearch 》总结_第5张图片
image.png
2019-07-09 《Kibana》安装 -《Elasticsearch 》总结_第6张图片
image.png

![Q51M@S$7)LPPK8[([QCN.png

副本 补齐

分片 补齐


《Kibana 安装》

1. 配置启动文件
[root@db01 ~]# grep "^[a-Z]" /etc/kibana/kibana.yml 
server.port: 5601
server.host: "10.0.0.51"
server.name: "db01"
elasticsearch.hosts: ["http://localhost:9200"]

2.启动
[root@db01 ~]# systemctl start kibana

检查端口
[root@db01 ~]# netstat -lnp|grep 5601
tcp        0      0 10.0.0.51:5601          0.0.0.0:*               LISTEN      2362/node

3. 连接
2019-07-09 《Kibana》安装 -《Elasticsearch 》总结_第7张图片
image.png

《中文分词器安装》

1.版本要对应
2.所有的ES节点都需要安装
3.所有es节点都需要重启

安装(有几个els节点安装几个)
[root@db01 ~]# cd /usr/share/elasticsearch/bin

[root@db01 /usr/share/elasticsearch/bin]# ./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip
-> Downloading https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip
[=================================================] 100%   
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.net.SocketPermission * connect,resolve
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y    #按 y 确认
-> Installed analysis-ik

重启 elasticsearch
[root@db01 ~]# systemctl restart elasticsearch

2019-07-09 《Kibana》安装 -《Elasticsearch 》总结_第8张图片
image.png
分词器测试
创建索引:
curl -XPUT http://localhost:9200/index

创建映射:
curl -XPOST http://localhost:9200/index/fulltext/_mapping -H 'Content-Type:application/json' -d'
{
        "properties": {
            "content": {
                "type": "text",
                "analyzer": "ik_max_word",
                "search_analyzer": "ik_max_word"
            }
        }
}'

创建一些文档:
curl -XPOST http://localhost:9200/index/fulltext/1 -H 'Content-Type:application/json' -d'
{"content":"美国留给伊拉克的是个烂摊子吗"}
'
curl -XPOST http://localhost:9200/index/fulltext/2 -H 'Content-Type:application/json' -d'
{"content":"公安部:各地校车将享最高路权"}
'
curl -XPOST http://localhost:9200/index/fulltext/3 -H 'Content-Type:application/json' -d'
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
'
curl -XPOST http://localhost:9200/index/fulltext/4 -H 'Content-Type:application/json' -d'
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
'

查询:
curl -XPOST http://localhost:9200/index/fulltext/_search?pretty  -H 'Content-Type:application/json' -d'
{
    "query" : { "match" : { "content" : "中国" }},
    "highlight" : {
        "pre_tags" : ["", ""],
        "post_tags" : ["", ""],
        "fields" : {
            "content" : {}
        }
    }
}
'

《elasticsearch》学习回顾

1. 什么叫搜索

2. 为什么mysql不适合全文检索

3. 什么是全文检索倒排索引打分

4. es的应用场景

5. es特点

  • 分布式、高可用、搜索分析

6. es安装部署

  • java环境
  • 内存不能小于1G
  • 磁盘空间充足
  • 配置文件开启内存锁定
  • jvm虚拟机最大最小内存都一样
  • 绑定内网IP和本地IP(工作场景只需要绑定内网IP)

7. 解决内存锁定

  • 配置文件增加允许内存锁定参数
  • 重启es

8. 测试

  • ps -ef | grep elasticearch
  • ss -lnp | grep 9200
  • netstat -lnp | grep 9200

9. 开放防火墙端口

  • 9200
  • 9300(通信端口)

10. 安装 es-head 插件

  • 安装包 npm
  • chrome 浏览器插件
  • 先压缩,再解压

11. 概念

  • index ---> 库
  • type ---> 表
  • doc ---> 行数据
  • fields ---> 字段
  • shards ---> 分片,分库分表

12. 操作命令 CRUD

  • put get post delete

13. 集群配置(生产环境的标配)

cluster.name: linux58           / 集群模式,必须打开,同一个进群要全部一样
node.name: node-1               / 节点名称,每个节点都不一样
path.data: /data/elasticsearch          / 如果你更换了目录,要授权给es用户和组
path.logs: /var/log/elasticsearch       / 如果是集群模式,日志名为{集群名.log}
bootstrap.memory_lock: true             / 内存锁定,一定要打开,然后修改system配置
network.host: 10.0.0.51,127.0.0.1       / 绑定内网IP,本地IP可以选择不做
http.port: 9200                 / 默认9200,还有一个隐藏的通信端口 9300
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52","10.0.0.53"]         / 集群发现地址,只要包含自己和集群内任意一个节点就可以
discovery.zen.minimum_master_nodes: 1         / 选举相关参数,多数节点数量 node/2 + 1
http.cors.enabled: true         / 为了让es-head 可以访问es,同下
http.cors.allow-origin: "*"     / 为了让es-head 可以访问es,同上

14. 介绍集群的相关重要信息

  • 分片数和副本数
  • 默认创建索引为5分片,1副本
  • 分片一旦创建好就不能更改了
  • 副本数可以随时动态调整
  • 集群健康状态
    -- red ---> 有数据不完整了
    -- yellow ---> 数据都完整,但是有索引的副本或者分片状态不正常
    -- green ---> 数据都完整,副本也符合条件
  • 监控节点数量

15.模拟故障现象

  • 停掉服务器,观察集群状态
  • 要注意,不能短时间内连续坏多台
  • 要注意,不饿能短时间关闭重启多个回合
  • 如果是0副本,数据所在的哪台机器,不能坏掉,不然数据会丢失

16. kibana 管理 es 集群

  • 打开监控功能
  • DevTools 可以方便执行命令

17. 中文分词器

  • 所有es节点都安装
  • 所有es节点安装完成后要重启才能生效
  • 先创建索引
  • 在创建映射关系(类似于mysql建表语句)
  • 然后指定使用中文分词器
  • 搜索测试
错误记录1
[2019-07-10T11:03:08,175][INFO ][o.e.c.r.a.DiskThresholdMonitor] [node-2] low disk watermark [85%] exceeded on [ctv1Dy7oTNybMQKL3DLiGQ][node-1][/data/elasticsearchdes/0] free: 709mb[13.8%], replicas will not be assigned to this node
[2019-07-10T11:03:38,181][INFO ][o.e.c.r.a.DiskThresholdMonitor] [node-2] low disk watermark [85%] exceeded on [ctv1Dy7oTNybMQKL3DLiGQ][node-1][/data/elasticsearchdes/0] free: 709mb[13.8%], replicas will not be assigned to this node
[2019-07-10T11:04:08,192][INFO ][o.e.c.r.a.DiskThresholdMonitor] [node-2] low disk watermark [85%] exceeded on [ctv1Dy7oTNybMQKL3DLiGQ][node-1][/data/elasticsearchdes/0] free: 709mb[13.8%], replicas will not be assigned to this node

解决方法:
磁盘空间不足,删除一部分数据

你可能感兴趣的:(2019-07-09 《Kibana》安装 -《Elasticsearch 》总结)