美文网首页
es(二)

es(二)

作者: Freestyle_0f85 | 来源:发表于2020-01-16 20:31 被阅读0次

    1: 集群相关名词

    1.集群健康状态
    绿色: 所有数据都完整,并且副本数满足
    黄色: 所有数据都完整,但是有的索引副本数不满足
    红色: 有的数据不完整

    2.节点类型
    主节点: 负责调度数据分配到哪个节点
    数据节点: 负责处理落到自己身上的数据
    默认: 主节点同时也是数据节点

    3.数据分片
    主分片: 实际存储的数据,负责读写,粗框的是主分片
    副本分片: 主分片的副本,提供读,同步主分片,细框的是副本分片

    4.副本:
    主分片的备份,副本数量可以自定义

    2: 部署ES集群

    1.安装java
    rpm -ivh jdk-8u102-linux-x64.rpm
    
    2.安装ES
    rpm -ivh elasticsearch-6.6.0.rpm
    
    3.配置ES配置文件
    配置内存锁定:
    systemctl edit elasticsearch.service
    [Service]
    LimitMEMLOCK=infinity
    集群配置文件:
    b01配置文件:
    [root@db-01 ~]# cat /etc/elasticsearch/elasticsearch.yml 
    cluster.name: linux
    node.name: node-1
    path.data: /var/lib/elasticsearch
    path.logs: /var/log/elasticsearch
    bootstrap.memory_lock: true
    network.host: 10.0.0.114,127.0.0.1
    http.port: 9200
    discovery.zen.ping.unicast.hosts: ["10.0.0.114","10.0.0.115"]
    discovery.zen.minimum_master_nodes: 1
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    ==================================================================
    db02配置文件:
    [root@db-02 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml 
    cluster.name: linux
    node.name: node-2
    path.data: /var/lib/elasticsearch
    path.logs: /var/log/elasticsearch
    bootstrap.memory_lock: true
    network.host: 10.0.0.115,127.0.0.1
    http.port: 9200
    discovery.zen.ping.unicast.hosts: ["10.0.0.114","10.0.0.115"]
    discovery.zen.minimum_master_nodes: 1
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
    4.启动
    systemctl daemon-reload
    systemctl restart elasticsearch
    
    5.查看日志
    tail -f /var/log/elasticsearch/linux.log
    

    3: ES集群相关注意

    注意事项:
    1.插入和读取数据在任意节点都可以执行,效果一样
    2.es-head可以连接集群内任一台服务

    3.主节点负责读写
    如果主分片所在的节点坏掉了,副本分片会升为主分片

    4.主节点负责调度
    如果主节点坏掉了,数据节点会自动升为主节点

    第九章: 查看集群各种信息

    GET _cat/nodes
    GET _cat/health
    GET _cat/master
    GET _cat/fielddata
    GET _cat/indices
    GET _cat/shards
    GET _cat/shards/oldzhang
    

    3: 集群注意事项

    注意1:发现节点参数不需要把集群内所有的机器IP都加上
    只需要包含集群内任意一个IP和自己的IP就可以
    discovery.zen.ping.unicast.hosts: ["10.0.0.51","10.0.0.53"]

    注意2: 集群选举相关的参数需要设置为集群节点数的大多数
    discovery.zen.minimum_master_nodes: 2

    注意3: 默认创建索引为1副本5分片

    注意4: 数据分配的时候会出现2中颜色
    紫色: 正在迁移
    黄色: 正在复制
    绿色: 正常

    注意5: 3节点的时候
    0副本一台都不能坏
    1副本的极限情况下可以坏2台: 1台1台的坏,不能同时坏2台
    2副本的情况可以同时坏2台

    第十一章: 自定义副本分片和索引
    索引为2副本3分片
    索引为0副本5分片

    注意:
    索引一旦建立完成,分片数就不可以修改了
    但是副本数可以随时修改

    命令:

    1.创建索引的时候就自定义副本和分片
    PUT /yayayaay/
    {
      "settings": {
        "number_of_shards": 3, 
        "number_of_replicas": 0
      }
    }
    
    2.修改单个索引的副本数
    PUT /oldzhang/_settings/
    {
      "settings": {
        "number_of_replicas": 0
      }
    }
    
    3.修改所有的索引的副本数
    PUT /_all/_settings/
    {
      "settings": {
        "number_of_replicas": 0
      }
    }
    

    工作如何设置:
    2个节点: 默认就可以
    3个节点: 重要的数据,2副本 不重要的默认
    日志收集: 1副本3分片

    4: 监控

    3节点实验宕机一台机器,集群状态仍然为绿色
    监控注意,不能只监控集群状态
    1.监控节点数
    2.监控集群状态
    3.2者任意一个发生改变了都报警

    监控命令:
    GET _cat/nodes
    GET _cat/health

    5.增强插件x-pack监控功能![ 1579175412(1).jpg

    1579175412(1).jpg

    6.安全功能

    7.x版本以上有自带功能,或者使用search-guard插件

    7.优化

    1.内存
    不要超过32G (官方说明)

    48内存
    系统留一半: 24G
    自己留一半: 24G
    8G 12G 16G 24G 30G 慢慢扩大容量,生产建议

    8.es的备份和恢复

    前提条件:
    必须要有Node环境和npm软件
    nodejs
    npm

    1.nodejs环境安装
    https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.xz
    tar xf  node-v10.16.3-linux-x64.tar.xz -C /opt/node
    vim /etc/profile
    export PATH=/opt/node/bin:$PATH
    source /etc/profile
    [root@db-01 ~]# node -v
    v10.16.3
    [root@db-01 ~]# npm -v
    6.9.0
    
    2.指定使用国内淘宝npm源
    npm install -g cnpm --registry=https://registry.npm.taobao.org
    
    3.安装es-dump
    cnpm install elasticdump -g
    
    4.备份命令
    elasticdump \
      --input=http://10.0.0.114:9200/oldzhang \
      --output=/data/oldzhang.json \
      --type=data
        
    elasticdump \
      --input=http://10.0.0.114:9200/oldzhang \
      --output=$|gzip > /data/oldzhang.json.gz  
      
    5.恢复命令 
    elasticdump \
    --input=/data/oldzhang.json \
    --output=http://10.0.0.114:9200/oldzhang
      
    6.注意
    恢复的时候需要先解压缩成json格式 
    恢复的时候,如果已经存在相同的数据,会被覆盖掉
    如果新增加的数据,则不影响,继续保留
    

    9.集群发现相关参数

    discovery.zen.fd.ping_timeout: 120s  
    discovery.zen.fd.ping_retries: 6  
    discovery.zen.fd.ping_interval: 30s  
    
    超时时间为120s
    重试次数为6次
    每次间隔30秒 
    

    10.中文分词

    es是国外开发,不支持中文词语组合搜索

    1.插入测试数据
    POST /news/txt/1
    {"content":"美国留给伊拉克的是个烂摊子吗"}
    
    POST /news/txt/2
    {"content":"公安部:各地校车将享最高路权"}
    
    POST /news/txt/3
    {"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
    
    POST /news/txt/4
    {"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
    
    2.检测
    POST /news/_search
    {
        "query" : { "match" : { "content" : "中国" }},
        "highlight" : {
            "pre_tags" : ["<tag1>", "<tag2>"],
            "post_tags" : ["</tag1>", "</tag2>"],
            "fields" : {
                "content" : {}
            }
        }
    }
    
    image.png

    分词配置
    0.前提条件

    • 所有的ES节点都需要安装
    • 所有的ES都需要重启才能生效
    1.配置中文分词器
    cd /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
    
    本地文件安装
    /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///XXX/elasticsearch-analysis-ik-6.6.0.zip
    
    systemctl restart elasticsearch
    
    2.创建索引 
    PUT /news2
    
    3.创建模板
    POST /news2/text/_mapping
    {
            "properties": {
                "content": {
                    "type": "text",
                    "analyzer": "ik_max_word",
                    "search_analyzer": "ik_smart"
                }
            }
    
    }
    
    
    4.插入测试数据
    POST /news2/text/1
    {"content":"美国留给伊拉克的是个烂摊子吗"}
    
    POST /news2/text/2
    {"content":"公安部:各地校车将享最高路权"}
    
    POST /news2/text/3
    {"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
    
    POST /news2/text/4
    {"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
    
    image.png

    自定义字典



    字典里面没有

    cd /etc/elasticsearch/analysis-ik/
    mkdir custom
    cd custom
    [root@mongo-01 custom]# cat mydict.dic 
    魏旭
    chown -R elasticsearch:elasticsearch custom
    [root@mongo-01 analysis-ik]# vim IKAnalyzer.cfg.xml 
    
    image.png
    systemctl restart elasticsearch
    
    image.png

    要重新创建,因为原来的已经用原来的字典分配好了,不会加载新的词典进去分配

    相关文章

      网友评论

          本文标题:es(二)

          本文链接:https://www.haomeiwen.com/subject/zdlqzctx.html