zoukankan      html  css  js  c++  java
  • kibana安装 & 增删改查 & es集群搭建

    kibana安装 & 增删改查 & es集群搭建

    一.kibana安装

    es官网: https://www.elastic.co/ 
    

    1)安装kibana

    #上传代码包
    [root@db01 ~]# rz kibana-6.6.0-x86_64.rpm
    
    #安装
    [root@db01 ~]# rpm -ivh kibana-6.6.0-x86_64.rpm
    

    2)配置kibana

    [root@db01 ~]# vim /etc/kibana/kibana.yml
    
    [root@db01 ~]# grep "^[a-z]" /etc/kibana/kibana.yml
    #进程的端口
    server.port: 5601
    #监听地址
    server.host: "10.0.0.51"
    #指定ES的地址
    elasticsearch.hosts: ["http://10.0.0.51:9200"]
    #kibana也会创建索引
    kibana.index: ".kibana"
    

    3)启动kibana

    [root@db01 ~]# systemctl start kibana.service
    
    #验证
    [root@db01 ~]# netstat -lntp       
    tcp        0      0 10.0.0.51:5601          0.0.0.0:*               LISTEN      88636/node
    

    4)访问页面

    http://10.0.0.51:5601
    

    二、ES数据操作

    1.创建索引

    #语法:
    PUT /<index>
    
    #示例:
    PUT /qiudao
    PUT zengdao
    

    2.创建数据

    1)数据结构

    ES存储数据三个必要构成条件
    
    构成条件 说明
    _index 索引(数据存储的地方)
    _type 类型(数据对应的类)
    _id 数据唯一标识符

    2)语法

    PUT /<index>/_doc/<_id>
    POST /<index>/_doc/
    PUT /<index>/_create/<_id>
    POST /<index>/_create/<_id>
    
    index:索引名称,如果索引不存在,会自动创建
    _doc:类型
    <_id>:唯一识别符,创建一个数据时,可以自定义ID,也可以让他自动生成
    

    3)使用自定义ID插入数据

    PUT /student/user/4
    {
      "name":"congtianqi",
      "sex":"male"
    }
    
    #企业使用该方式少
    	1.需要修改id值
    	2.当指定ID时,插入数据时会查询数据对比ID值
    

    4)使用随机ID插入数据

    POST /student/user/
    {
      "name":"liuxinyu",
      "sex":"fmale"
    }
    

    5)添加指定字段

    POST /student/user/
    {
      "id":"1",
      "name":"liuxinyu",
      "sex":"fmale"
    }
    
    #企业应用较多
    

    3.查询数据

    1)简单查询

    #查看所有索引信息
    GET _all
    GET /_all
    
    #查看所有索引的数据
    GET _all/_search
    
    #查看指定索引信息
    GET student
    
    #查看指定索引的数据
    GET student/_search
    
    #查看指定数据
    GET student/user/1
    

    2)条件查询

    # 注意:
    match在匹配时会对所查找的关键词进行分词,然后按分词匹配查找,而term会直接对关键词进行查找。一般模糊查找的时候,多用match,而精确查找时可以使用term。
    
    1>方法一:
    GET /student/_search
    {
      "query": {
        "term": {
          "age": {
            "value": "18"
          }
        }
      }
    }
    
    2>方法二:
    GET /student/_search
    {
      "query": {
        "term": {
          "age":"18"
        }
      }
    }
    
    3>方法三:
    GET /student/_search
    {
      "query": {
        "match": {
          "age": "18"
        }
      }
    }
    

    3)多条件查询

    1>must查询(相当远sql中的and)
    #查询条件必须全部满足
    GET /student/_search
    {
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "age": {
                  "value": "18"
                }
              }
            },
            {
              "term": {
                "name": {
                  "value": "lhd"
                }
              }
            }
          ]
        }
      }
    }
    
    2>filter查询(和sql中的and差不多)
    #跟must一样,只不过在数据量很大时,比must查询快一点
    GET /student/_search
    {
      "query": {
        "bool": {
          "filter": [
            {
              "term": {
                "age": {
                  "value": "18"
                }
              }
            },
            {
              "term": {
                "name": {
                  "value": "lhd"
                }
              }
            }
          ]
        }
      }
    }
    
    3>should查询(相当于sql中的or)
    #多条件查询时,查询条件只要有一个满足就可以
    GET /student/_search
    {
      "query": {
        "bool": {
          "should": [
            {
              "term": {
                "age": {
                  "value": "18"
                }
              }
            },
            {
              "term": {
                "name": {
                  "value": "lhd"
                }
              }
            }
          ]
        }
      }
    }
    
    4>must_not查询(sql中的!=)
    # 将年龄不为18,名字不为lhd的全部都显示出来
    GET /student/_search
    {
      "query": {
        "bool": {
          "must_not": [
            {"term": {
              "name": {
                "value": "lhd"
              }
            }},
            {"term": {
              "age": {
                "value": "18"
              }
            }}
          ]
        }
      }
    }
    
    5>must和should结合
    #查询年龄是21岁或者年龄是18岁并且名字是lhd的数据
    GET /student/_search
    {
      "query": {
        "bool": {
          "should": [
            {
              "term": {
                "age": {
                  "value": "21"
                }
              }
            },
            {
              "bool": {
                "must": [
                  {
                    "term": {
                      "age": {
                        "value": "18"
                      }
                    }
                  },
                  {
                    "term": {
                      "name": {
                        "value": "lhd"
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    }
    
    6>条件范围查询
    # 将年龄大于20小于25的全部显示
    GET /student/_search
    {
      "query": {
        "bool": {
          "must": [
            {
              "range": {
                "age": {
                  "gte": 20,
                  "lte": 25
                }
              }
            }
          ]
        }
      }
    }
    

    4.修改数据

    #修改数据时指定id修改
    PUT /student/user/1
    {
      "name":"song",
      "sex":"fmale",
      "age":"18"
    }
    
    #注意,修改数据时,除了要修改的值。其他的值也要带上,否则其他值直接被删除
    PUT /student/user/2
    {
      "name":"lhd",
      "sex":"man",
      "age":"19"
    }
    

    5.删除数据

    #删除指定ID数据
    DELETE /student/user/4
    
    #删除索引
    DELETE /student
    

    三、集群

    1.集群

    1)集群状态

    1.红色:数据都不完整
    2.黄色:数据完整,但是副本有问题
    3.绿色:数据和副本全都没有问题
    

    2)节点类型

    1.主节点:负责调度分配数据
    2.数据节点:处理分配到自己的数据
    

    3)分片

    1.主分片:存储数据,负责读写数据
    2.副本分片:主分片的备份
    

    2.搭建集群

    # 基本安装(三台都需要)
    1. 安装ntp时间同步工具
    [root@db01 ~]# yum install -y ntpdate
    
    2.时间同步阿里云
    [root@db01 ~]# ntpdate time1.aliyun.com
    
    3.上传jdk包,安装jdk
    [root@db01 ~]# rpm -ivh jdk-8u181-linux-x64.rpm 
    
    4.上传elasticsearch安装包,并且安装
    [root@db01 ~]# rpm -ivh elasticsearch-6.6.0.rpm 
    
    5.修改启动文件,添加内存锁机制
    [root@db01 system]# vim /usr/lib/systemd/system/elasticsearch.service 
    LimitMEMLOCK=infinity
    
    6.启动服务
    注:根据安装操作后提示进行服务启动
    [root@db01 ~]# systemctl daemon-reload
    [root@db01 ~]# systemctl enable elasticsearch.service
    [root@db01 ~]# systemctl start elasticsearch.service
    
    7.集群搭建配置(三台配置有所不同)
    [root@db01 system]# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml
    cluster.name: tcy
    node.name: node-1
    path.data: /var/lib/elasticsearch
    path.logs: /var/log/elasticsearch
    bootstrap.memory_lock: true
    network.host: 10.0.0.51,127.0.0.1
    http.port: 9200
    discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52", "10.0.0.53"]
    discovery.zen.minimum_master_nodes: 2 
    
    [root@db02 system]# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml
    cluster.name: tcy
    node.name: node-2
    path.data: /var/lib/elasticsearch
    path.logs: /var/log/elasticsearch
    bootstrap.memory_lock: true
    network.host: 10.0.0.52,127.0.0.1
    http.port: 9200
    discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52", "10.0.0.53"]
    discovery.zen.minimum_master_nodes: 2
    
    [root@db03 system]#  grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml
    cluster.name: tcy
    node.name: node-3
    path.data: /var/lib/elasticsearch
    path.logs: /var/log/elasticsearch
    bootstrap.memory_lock: true
    network.host: 10.0.0.53,127.0.0.1
    http.port: 9200
    discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52", "10.0.0.53"]
    discovery.zen.minimum_master_nodes: 2 
    
    8.查看端口
    [root@db01 system]# netstat -lntup      
    tcp6       0      0 10.0.0.51:9200          :::*                    LISTEN      9334/java           
    tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      9334/java           
    tcp6       0      0 10.0.0.51:9300          :::*                    LISTEN      9334/java           
    tcp6       0      0 127.0.0.1:9300          :::*                    LISTEN      9334/java           
     
    9.写入数据
    [root@db01 system]#  curl -XPUT '10.0.0.51:9200/student?pretty'
    {
      "acknowledged" : true,
      "shards_acknowledged" : true,
      "index" : "student"
    }
    
  • 相关阅读:
    鼠标事件(onmouseover、onmouseout)延时切换插件
    光线跟踪MaxScript版
    MaxSDK添加菜单项
    Linux实战教学笔记03:操作系统发展历程及系统版本选择
    Linux实战教学笔记06:Linux系统基础优化
    Linux实战教学笔记04:Linux命令基础
    Linux实战教学笔记02:计算机系统硬件核心知识
    Linux实战教学笔记05:远程SSH连接服务与基本排错(新手扫盲篇)
    Linux实战教学笔记01:计算机硬件组成与基本原理
    如何启动linux的telnet服务
  • 原文地址:https://www.cnblogs.com/tcy1/p/13475926.html
Copyright © 2011-2022 走看看