第二章 ES数据操作与集群

news/2024/5/19 4:04:27/文章来源:https://www.cnblogs.com/GAO321/p/16714943.html

一、回顾

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 /indexcurl -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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_11318.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8

因为另一台机器开发时,android studio提示更新什么东西,无脑点了。 导致原先的那台开发机器,无法build,报异常: Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8 有两个方法解决: 1、修改jdk从1.8改到11如果没有这个选项,可能需要安装…

高项重点内容

BI&#xff0c;商业智能 联机事务处理OLTP主要是执行基本日常的事务处理&#xff0c;比如数据库记录的增删查改。比如在银行的一笔交易记录&#xff0c;就是一个典型的事务。联机分析处理是数据仓库系统的主要应用&#xff0c;支持复杂的分析操作&#xff0c;侧重决策支持&…

Java高级:IO

笔记来源&#xff1a;尚硅谷Java入门视频教程(在线答疑Java面试真题) 文章目录一 File类的使用1.1 基本概述1.2 File类的常用构造器1.3 路径分隔符1.4 File类常用方法二 IO流原理及流的分类2.1 IO原理2.2 流的分类2.3 节点流和处理流2.4 InputStream & Reader2.4.1 InputSt…

mini LED显示屏—点胶测量

mini LED显示屏作为一种LED的一种技术&#xff0c;其产品已开始应用于超大屏高清显示&#xff0c;如监控指挥、高清演播、高端影院、医疗诊断、广告显示、会议会展、办公显示、虚拟现实等商用领域。 而本次测量mini LED显示屏胶水高度。测试采样步距间隔大小的测量精度&#xf…

基于PHP的校园二手信息网站的设计与实现毕业设计源码251656

目 录 摘要 1 绪论 1.1 研究背景 1.2国内外研究现状 1.3论文结构与章节安排 2 校园二手信息网站系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2…

压裂反排液除氨氮树脂技术

项目名称 中国石油工程建设除氨氮项目 工艺选择 沉淀工艺软化系统膜系统离子交换脱氨系统&#xff0c;出水稳定在0.2mg/l 工艺原理 页岩气开采反排液&#xff0c;经过沉淀工艺后进入软化系统&#xff0c;然后经过反渗透工艺后进行离子交换脱氨工艺。 下面这个案例分享是科…

戴尔笔记本重装系统硬盘加密怎么解除

​bitlocker加密可以很好地保护计算机中的数据&#xff0c;那么dell电脑硬盘的bitlocker加密如何解除 ?小编给大家介绍一下解除戴尔笔记本硬盘加密的方法。 工具/原料&#xff1a; 系统版本&#xff1a;windows10系统 品牌型号&#xff1a;戴尔 方法/步骤&#xff1a; 解…

Methyltetrazine-Maleimide,甲基四嗪-马来酰亚胺 一种可降解ADC linker

●中文名&#xff1a;甲基四嗪-马来酰亚胺 ●英文&#xff1a;Methyltetrazine-Maleimide ●外观以及性质&#xff1a;红色固体&#xff0c;Methyltetrazine-Maleimide 是一种可降解 (cleavable) 的 ADC linker&#xff0c;可用于合成抗体偶联药物 (ADC)。其次是一种点击化学马…

【云原生 | 从零开始学Kubernetes】二十二、kubernetes持久化存储下

该篇文章已经被专栏《从零开始学k8s》收录 上一篇文章&#xff1a;kubernetes持久化存储上 点击跳转 持久化存储下k8s 持久化存储&#xff1a;hostPathk8s 持久化存储&#xff1a;nfsk8s 持久化存储&#xff1a; PVCk8s PV 是什么&#xff1f;k8s PVC 是什么&#xff1f;k8s PV…

【Docker】简单搭建Portainer

既然是家用的Docker那就不上Rancher了&#xff0c;直接通过Portainer轻量化解决所有问题。还好最新的Portainer还是很人性化的&#xff0c;搭建也比较简单&#xff0c;说白了原理就是直接通过宿主机的Docker进行同调&#xff08;这个可以通过下面的启动语句得知&#xff09;。 …

MySQL数据库之进阶查询语句

目录 一、常用查询 1、按关键字查询 ①升序排序 ②降序排序 ③结合where进行条件过滤 ④多字段排序 2、and和or判断 ①and和or的使用 ②嵌套、多条件使用 3、distinct 查询不重复记录 4、group by 对结果进行分组 5、limit限制结果条目 6、设置别名&#xff…

Sentinel核心算法设计与实现

这里我们先一起了解一下Sentinel的一些比较重要的概念 ,Sentinel 整体工作流程采用责任链模式,功能定义Slot,计数通过Node,在Slot中通过选用不同的Node实现不同的流控模式。 Node 用于不同纬度的计数Slot 实现不同的功能Resource 受保护的资源Rule 保护资源规则 回顾完了S…

跟踪元素可视?试试Intersection Observer

本文将讲解Intersection Observer的用法及其polyfill的原理&#xff0c;我们一起来看下。背景现在有以下几种场景。页面滚动时懒加载图片实现无线滚动页面&#xff08;Infinite scrolling&#xff09;根据某个元素是否出现在视窗从而执行某些逻辑&#xfeff;对于这些传统的实现…

ONES 参与《软件研发效能权威指南》编写

9月16-17日&#xff0c;2022 年 QECon 全球软件质量&效能大会在上海举行&#xff0c;ONES 联合创始人兼 CTO 冯斌受邀参加本次大会&#xff0c;并做了主题为《大型软件团队项目管理数字化实践》的分享。演讲剖析了百人以上大型团队的研发管理痛点&#xff0c;并结合 ONES 丰…

Sqlserver 根据父节点ID查询所有子节点

举例: 根据父节点ID查询出所有子节点 不含父节点DECLARE @ParentID int SET @ParentID=3; with CTEGetChild as ( select * from [dbAssetCheck-yili].[dbo].[vFinaceDepartment] where PFDepartmentId=@ParentID UNION ALL (SELECT a.* from [dbAssetCheck-yili].[dbo].[vFi…

【JavaWeb篇】快速学习MyBatis|实战项目详解

作者主页&#xff1a;橙子! 主页 系列专栏&#xff1a;JavaWeb基础教程系列 精彩回顾&#xff1a;HTTP协议详解 文章目的&#xff1a;快速学习MyBatis及实战项目详解 文章目录1.什么是MyBatis?2. JDBC存在的缺点3.Mybatis简化JDBC开发4.MyBatis快速入门1.什么是MyBatis? 简单…

工具推荐-使用RedisInsight工具对Redis集群CURD操作及数据可视化和性能监控

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

Balk——你不来,我走了

模式概要 通过synchronized关键字保护&#xff0c;判断一个契机&#xff0c;如果契机满足则继续执行&#xff0c;不满足则直接返回。 与Guarded Suspension模式有显著的对比。Guarded Suspensionhttps://blog.csdn.net/Day_and_Night_2017/article/details/126945643 核心思路…

kafka的学习笔记

kafka - producer&#xff1a;发布消息的对象称之为主题生产者&#xff08;Kafka topic producer&#xff09; - topic&#xff1a;Kafka将消息分门别类&#xff0c;每一类的消息称之为一个主题&#xff08;Topic&#xff09; - consumer&#xff1a;订阅消息并处理发布的消息的…

通信原理学习笔记2-1:模拟调制——相干解调的载波恢复、锁相环(平方环/Costas环)、变频/混频技术

原始信号为基带模拟信号&#xff0c;要想在空气中传播信号&#xff0c;必须使用频带信号&#xff08;频率高则天线长度降低&#xff0c;且可能进行频分复用等&#xff09; 要产生频带信号&#xff0c;需要频谱搬移&#xff0c;这就是调制&#xff1b;基带信号经过调制&#xff…