首页 > 其他分享 >第二章 ES数据操作与集群

第二章 ES数据操作与集群

时间:2022-09-21 11:22:14浏览次数:55  
标签:term rpm 集群 es01 elasticsearch 第二章 root ES

一、回顾

1.介绍ES

2.ES原理

3.ES功能

4.ES使用场景

5.ES安装

1)ES配置文件(单点配置)

[root@es01 ~]# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml
node.name: es-1
path.data: /data/es/data
path.logs: /data/es/log
bootstrap.memory_lock: true
network.host: 10.0.0.71,127.0.0.1,172.16.1.71
http.port: 9200

二、跟ES交互的方式

1.使用curl命令

#创建索引
[root@es01 ~]# curl -XPUT 'http://10.0.0.71:9200/test1?pretty'
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "test1"
}

#插入数据
[root@es01 ~]# curl -XPUT '10.0.0.71:9200/student/user/1?pretty' -H 'Content-Type: application/json' -d '{"name": "lhd","sex":"man","age":"18","about":"good good study","interests":["chinese","english"]}'

2.使用head插件的方式

3.kibana的方式

1)安装

[root@es01 ~]# ll
-rw-r--r--  1 root root 185123116 Jan 29  2019 kibana-6.6.0-x86_64.rpm

[root@es01 ~]# rpm -ivh kibana-6.6.0-x86_64.rpm

2)配置kibana

[root@es01 ~]# grep '^[a-z]' /etc/kibana/kibana.yml 
server.port: 5601
server.host: "10.0.0.71"
elasticsearch.hosts: ["http://10.0.0.71:9200"]

3)启动

[root@es01 ~]# systemctl start kibana

[root@es01 ~]# netstat -lntp | grep 5601
tcp        0      0 10.0.0.71:5601          0.0.0.0:*               LISTEN      14960/node

4)访问

http://10.0.0.71:5601

三、ES数据的操作

1.创建索引

1)语法

PUT /<index>

2)示例

PUT /index

curl -XPUT 'http://10.0.0.71:9200/index'

2.创建数据

1)数据结构

ES存储三个必要构成
_index
_type
_id

构成 说明
_index 索引(数据存储的地方)
_type 类型(数据对应类)
_id 数据的唯一标识

2)语法

PUT /<index>/_doc/<_id>
POST /<index>/_doc/
PUT /<index>/_create/<_id>
POST /<index>/_create/<_id>

index:索引的名称,如果索引不存在,会自动创建
_doc:类型
_id:唯一标识,可以手动指定,也可以自动生成

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

PUT /index/_doc/1
{
  "name":"qiudao",
  "age":"18"
}

#该方式企业应用较少
	1.需要修改id的值
	2.指定ID插入数据时,ES会先拿着指定的id去对比一遍所有数据,看看有没有相同值

4)使用随机ID插入数据

POST /index/_doc/
{
  "name":"qiudao",
  "age":"20"
}

5)添加字段指定ID

POST /index/_doc/
{
  "id":"1",
  "name":"qiudao",
  "age":"20"
}

3.查询数据

1)简单查询

#查询所有索引的信息
GET /_all
GET _all

#查看所有索引的数据
GET /_all/_search

#查看指定索引的信息
GET /teacher

#查看指定索引的数据
GET /teacher/_search

#查看索引中指定的数据
GET /teacher/user/2
GET /teacher/user/1m-gGHYB5ia7o7wd9dPk

2)单条件查询

1>方法一:

GET /teacher/_search
{
  "query": {
    "term": {
      "age": {
        "value": "18"
      }
    }
  }
}

2>方法二:

GET /teacher/_search
{
  "query": {
    "term": {
      "age": "18"
    }
  }
}

3>方法三:

GET /teacher/_search
{
  "query": {
    "match": {
      "age": "18"
    }
  }
}

#指定条件可以使用term也可以使用match,term搜索数据时不进行分词,适合进行精确查找,match搜索时进行分词适用于全文检索

3)多条件查询

1>must查询

#多个查询条件必须全部满足  &
GET /teacher/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "age": {
              "value": "18"
            }
          }
        },
        {
          "term": {
            "sex": {
              "value": "nv"
            }
          }
        }
      ]
    }
  }
}

2>filter查询

#跟must作用一样,但是速度要比must快一点
GET /teacher/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "age":"18"
          }
        },
        {
          "term": {
            "sex":"nv"
          }
        }
      ]
    }
  }
}

3>should查询

#多条件查询时,符合其中一个条件就可以  |
GET /teacher/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "age": {
              "value": "18"
            }
          }
        },
        {
          "term": {
            "id": {
              "value": "5"
            }
          }
        }
      ]
    }
  }
}

4)must_not

GET /teacher/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "term": {
            "age": {
              "value": "18"
            }
          }
        },
        {
          "term": {
            "id": {
              "value": "5"
            }
          }
        }
      ]
    }
  }
}

5)must和should结合使用

#查询年龄是21或者年龄是18岁并且名字是lizhenglin的数据
GET /teacher/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "age": {
              "value": "21"
            }
          }
        },
        {
          "bool": {
            "must": [
              {
                "term": {
                  "age": {
                    "value": "18"
                  }
                }
              },
              {
                "term": {
                  "name": {
                    "value": "lizhenglin"
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}

4.修改数据

#修改数据通过_id进行修改,修改数据是,除了要修改的字段意外,其他的字段也要全部写上
PUT /teacher/user/9G-FHXYB5ia7o7wdEdOH
{
  "id":"6",
  "name":"wananfeng",
  "sex":"nan",
  "age":"25"
}

5.删除数据

#删除指定数据,通过_id进行选择删除
DELETE /teacher/user/9G-FHXYB5ia7o7wdEdOH

#删除索引
DELETE /teacher

四、ES集群

1.ES插件页面

1)集群状态

1.红色:数据不完整
2.黄色:数据完整,但是副本有问题
3.绿色:数据和副本全部都没有问题,集群状态正常

2)节点类型

1.主节点:负责调度分配数据存储
2.数据节点:负责储存由主机点传来的数据

3)分片

1.主分片:存储数据,负责读写数据
2.副本分片:主分片的备份,当主分片故障时,提供有问题的数据

2.搭建集群

1)准备服务器

主机 IP
es01 10.0.0.71
es02 10.0.0.72
es03 10.0.0.73

2)时间同步

[root@es01 ~]# ntpdate time1.aliyun.com
[root@es02 ~]# ntpdate time1.aliyun.com
[root@es03 ~]# ntpdate time1.aliyun.com

3)安装java环境

[root@es01 ~]# scp jdk-8u181-linux-x64.rpm 172.16.1.72:/root/
[root@es01 ~]# scp jdk-8u181-linux-x64.rpm 172.16.1.73:/root/

[root@es01 ~]# yum localinstall -y jdk-8u181-linux-x64.rpm
[root@es02 ~]# yum localinstall -y jdk-8u181-linux-x64.rpm
[root@es03 ~]# yum localinstall -y jdk-8u181-linux-x64.rpm

4)安装ES

[root@es01 ~]# scp elasticsearch-6.6.0.rpm 172.16.1.72:/root
[root@es01 ~]# scp elasticsearch-6.6.0.rpm 172.16.1.73:/root

[root@es01 ~]# rpm -ivh elasticsearch-6.6.0.rpm
[root@es02 ~]# rpm -ivh elasticsearch-6.6.0.rpm
[root@es03 ~]# rpm -ivh elasticsearch-6.6.0.rpm

[root@es01 ~]# systemctl daemon-reload
[root@es02 ~]# systemctl daemon-reload
[root@es03 ~]# systemctl daemon-reload

5)配置ES

1>第一台机器的配置

[root@es01 ~]# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml
#集群的名称
cluster.name: es-cluster
node.name: es-1
path.data: /data/es/data
path.logs: /data/es/log
bootstrap.memory_lock: true
network.host: 10.0.0.71,127.0.0.1,172.16.1.71
http.port: 9200
#集群中的服务器ip地址
discovery.zen.ping.unicast.hosts: ["172.16.1.71", "172.16.1.72"]
#选举主节点时投票的机器数
discovery.zen.minimum_master_nodes: 2

2>第二台机器的配置

[root@es02 ~]# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml
cluster.name: es-cluster
node.name: es-2
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 172.16.1.72,10.0.0.72,127.0.0.1
http.port: 9200
discovery.zen.ping.unicast.hosts: ["172.16.1.72", "172.16.1.73"]
discovery.zen.minimum_master_nodes: 2

3>第三台机器的配置

[root@es03 ~]# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml
cluster.name: es-cluster
node.name: es-3
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 172.16.1.73,10.0.0.73,127.0.0.1
http.port: 9200
discovery.zen.ping.unicast.hosts: ["172.16.1.73", "172.16.1.71"]
discovery.zen.minimum_master_nodes: 2

4>三台机器都修改启动脚本

[root@es02 ~]# vim /usr/lib/systemd/system/elasticsearch.service
[Service]
... ...
LimitMEMLOCK=infinity

6)启动三台ES

[root@es01 ~]# systemctl start elasticsearch
[root@es01 ~]# netstat -lntp | grep java

标签:term,rpm,集群,es01,elasticsearch,第二章,root,ES
From: https://www.cnblogs.com/GAO321/p/16714943.html

相关文章

  • Synopsys Neural Processing Units (NPU)
     4KMACArrayMAC阵列 https://www.synopsys.com/zh-cn/designware-ip/processor-solutions/arc-npx-family.html    https://semiwiki.com/eda/synopsys/......
  • kubenetes基础概念
    1.工作流程1.1用户准备一个资源文件(记录了业务应用的名称,镜像地址信息),通过调用APIServer执行插件pod1.2APIServer收到用户的pod创建请求,将pod信息写入到etcd中1.3......
  • 上传了ipa但iTunes Connect没有构建版本问题
    AU上传ipa出现下图红框提示说明成功上传,如果AppStore后台没有出现构建版本,请登录apple账号对应的邮箱查看反馈,特别留意垃圾邮箱,无论成功还是失败,apple都会发邮件一、首......
  • PostgreSQL逻辑复制解密
    在数字化时代的今天,我们都认同数据会创造价值。为了最大化数据的价值,我们不停的建立着数据迁移的管道,从同构到异构,从关系型到非关系型,从云下到云上,从数仓到数据湖,试图在各......
  • Git 报错:remote:HTTP Basic:Access denied
    问题:外包公司定时清理C盘,突然发现Git被清理掉了,安装之后,提交代码报了错.(remote:HTTPBasic:Accessdenied)导致问题的原因:远程服务端的用户名和密码与当前系统中git......
  • 来看界面组件DevExpress WinForm是如何实现地图搜索的
    DevExpressWinForm拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office......
  • Smallest Subsets
    传送门题意:\(n\le1e5\)个整数,范围\(-1e9\lea\le1e9\),求第\(k\)小的子集和思路先考虑只有正数怎么做这就是经典的类最短路:先将序列排序,然后从最小的子集和\({......
  • df.values.tolist()
     在Python数据分析中,Pandas的DataFrame和list数据类型之间可以相互转换。1.1df.values.tolist():可以将DataFrame数据类型转化为list数据类型;1.2pd.DataFrame():......
  • 【PostgreSQL】PG读取元数据获取表结构及字段类型信息(过程拆解及其他应用场景)
    〇、参考链接 一、代码selectc.relname表名,cast(obj_description(relfilenode,'pg_class')asvarchar)名称,d.description字段备注,a.att......
  • Flask 学习-70.Flask-RESTX 注册接口实例
    前言注册接口主要是密码需要加密,用到werkzeug.security模块的2个方法generate_password_hash,check_password_hash.数据库操作用到Flask-SQLAlchemy,相关的基础配置就......