Elasticsearch的Restful风格API

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除

1、Restful及JSON格式

RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP可以使用 XML 格式定义或 JSON 格式定义。REST(英文:Representational State Tranfer,简称REST)描述了一个架构样式的网络系统,比如web应用程序

JSON格式:

数据类型描述举例
字符串要求使用双引号("")引起来的数据"elasticsearch"
数字通常指的是0-9的所有数字100
布尔值只有true和false两个值true
空值只有null一个值null
数组使用一对中括号("[]")放入不同的元素(支持高级数据和基础数据类型)["linux","docker"]
对象使用一对大括号("{}")括起来,里面的数据使用KEY-VALUE键值对即可{"class":"linux","age":25}

2、Elasticsearch的相关术语

  • Document文档,是用户存储在ES的一些数据,它是ES中最小的存储单元
  • field:相当于数据库表的字段,对文档数据根据不同属性进行分类标示
  • index索引;一个索引就是一个拥有相似特征文档的集合
  • shard分片;真正存储数据的地方,每个分片底层对应的是一个Lucene库。一个索引至少有1个或多个分片
  • replica副本;对数据的备份,一个分片可以有0个或多个副本。一旦副本数量不为0,就会引入主分片(primary shard)和副本分片(replica shard)的概念
    • 主分片(primary shard):可以实现对数据的读写操作

    • 副本分片(replica shard):可以实现数据读操作,与此同时,需要去主分片同步数据,当主分片挂掉,副本分片会变为主分片

  • Allocation分配;将分片(shard)分配给某个节点的过程,包括主分片与副本分片;如果是副本分片,它还包含主分片复制数据的过程,这个分配过程由master节点调度完成
  • Type:在es 5.x即更早的版本,在一个索引中,我们可以定义一种或多种数据类型。但在es7仅支持"_doc"类型。

3、管理索引的API

3.1、查看索引信息

 GET http://192.168.1.10:9200/_cat/indices   # 查看全部的索引信息GET http://192.168.1.10:9200/_cat/indices?v # 查看表头信息GET http://192.168.1.10:9200/_cat/indices/.kibana_7.17.3_001?v  # 查看单个索引 GET http://192.168.1.10:9200/.kibana_7.17.3_001 # 查看单个索引的详细信息

3.2、创建索引

 # 创建索引并指定分片和副本PUT http://192.168.1.10:9200/cluster-linux2{"settings":{"index":{"number_of_shards": "3","number_of_replicas": 0}}}# 参数说明"number_of_shards": 指定分片数量"number_of_replicas": 指定副本数量

3.3、修改索引

 PUT http://192.168.1.10:9200/cluster-linux/_settings{"number_of_replicas": 0}# 注意:分片数量无法修改,副本数量是可以修改的

3.4、删除索引

 DELETE http://192.168.1.10:9200/cluster-linux# 删除索引,服务器的数据也会随之删除

3.5、索引别名

 POST http://192.168.1.10:9200/_aliases      # 添加索引别名{"actions": [{"add": {"index": "cluster-linux","alias": "2024"}},{"add": {"index": "cluster-linux1","alias": "23世纪"}}]}GET http://192.168.1.10:9200/_aliases       # 查看所有索引的别名POST http://192.168.1.10:9200/_aliases      # 删除索引{"actions": [{"remove": {"index": "cluster-linux","alias": "2024"}}]}POST http://192.168.1.10:9200/_aliases      # 修改索引别名{"actions": [{"remove": {"index": "cluster-linux","alias": "2024"}},{"add": {"index": "cluster-linux","alias": "23世纪"}}]}

3.6、索引关闭

索引关闭意味着无法进行任何的读写操作,但数据并不会被删除;

 POST http://192.168.1.10:9200/cluster-linux/_close  # 关闭索引POST http://192.168.1.10:9200/cluster-*/_close      # 基于通配符关闭索引

3.7、索引打开

 POST http://192.168.1.10:9200/cluster-linux/_open   # 打开索引POST http://192.168.1.10:9200/cluster-*/_open       # 基于通配符打开索引

4、管理文档的API

4.1、文档的创建

 # 创建文档POST http://192.168.1.10:9200/teacher/_doc{"name":"cluster","hobby":["Linux","Docker"]}# 创建文档并指定idhttp://192.168.1.10:9200/teacher/_doc/1001​# 文档类型http://192.168.1.10:9200/student/linux/1001http://192.168.1.10:9200/student/_doc/1002

4.2、文档的查看

源数据:指的是用户写入的数据

元数据:描述数据的数据,由ES内部维护

 GET http://192.168.1.10:9200/teacher/_search    #查看所有文档 GET http://192.168.1.10:9200/teacher/_doc/LQSMhJEBbNOjcNtbiy97  # 查看某一个文档HEAD http://192.168.1.10:9200/teacher/_doc/LQSMhJEBbNOjcNtbiy97 # 判断一个文档是否存在,返回200、404

4.3、文档的修改

 # 全局更新,会覆盖原有的文档数据内容POST http://192.168.1.10:9200/teacher/_doc/LQSMhJEBbNOjcNtbiy97 {"name":"cluster","hobby":["Linux","Docker","Java"]}​# 局部更新,并不会覆盖原有的文档数据内容POST http://192.168.1.10:9200/teacher/_doc/LQSMhJEBbNOjcNtbiy97/_update{"doc": {"name": "小李""age": 22}}

4.4、文档的删除

 DELETE http://192.168.1.10:9200/teacher/_doc/1001

4.5、文档的批量操作

 # 批量创建POST http://192.168.1.10:9200/_bulk{"create":{"_index":"cluster-linux-elk"}}{"name":"user1","hobby":["u1xx1","u1xx2"]}{"create":{"_index":"cluster-linux-elk","_id": 1002}}{"name":"user2","hobby":["u2xx1","u2xx2"]}{"create":{"_index":"cluster-linux-elk","_id": 1001}}}{"name":"user3","hobby":["u3xx1","u3xx2"]}​# 批量删除POST http://192.168.1.10:9200/_bulk{"delete":{"_index":"cluster-linux-elk","_id": "1001" }}{"delete":{"_index":"cluster-linux-elk","_id": "1002" }}​# 批量修改POST http://192.168.1.10:9200/_bulk{"update":{"_id":"1001","_index": "cluster-linux-elk" }}{"doc":{"name":"更改1"}}{"update":{"_id":"1002","_index": "cluster-linux-elk" }}{"doc":{"name":"更改2"}}​# 批量查看POST http://192.168.1.10:9200/_mget{"docs": [{"_index": "cluster-linux-elk","_id": "1001"},{"_index": "cluster-linux-elk","_id": "1002"}]}

5、使用映射(mapping)自定义数据类型

 https://www.elastic.co/guide/en/elasticsearch/reference/7.17/mapping.html

映射定义文档及其包含的字段如何存储和索引的过程

每个文档都是字段的集合,每个字段都有自己的数据类型。映射数据时,我们创建一个映射定义,其中包含与文档相关的字段列表。映射定义还包括元数据字段,例如_source自定义 如何处理文档的关联元数据的字段。

使用动态映射显式映射来定义数据。每种方法 根据您在数据旅程中所处的位置提供不同的优势。为 例如,显式映射您不想使用默认值的字段,或者将字段映射到 更好地控制创建的字段。然后,您可以允许 Elasticsearch 动态添加其他字段。

5.1、IP案例

 # 创建索引时指定映射关系PUT http://192.168.1.10:9200/cluster-linux-elk      {"mappings":{"properties":{"ip_addr":{"type":"ip"}}}}​#查看索引时指定映射关系GET http://192.168.1.10:9200/cluster-linux-elk​# 查看IP的网段GET http://192.168.1.10:9200/cluster-linux-elk/_search{"query":{"match":{"ip_addr":"192.168.0.0/16"}}}

5.2、其他数据案例

 # 创建索引PUT http://192.168.1.10:9200/cluster-linux-elk-2024# 修改索引的数据类型PUT http://192.168.1.10:9200/cluster-linux-elk-2024/_mapping{"properties": {"name": {"type": "text","index": true},"gender": {"type": "keyword","index": true},"telephone": {"type": "text","index": false},"address": {"type": "keyword","index": false},"email": {"type": "keyword"},"ip_addr": {"type": "ip"}}}# 添加测试数据{"create":{"_index":"cluster-linux-elk-2024"}}{"ip_addr":"192.168.10.10","name":"zhangsan","gender":"male","telephone":"123456","address":"xxx","email":"zhangsan@qq.com"}{"create":{"_index":"cluster-linux-elk-2024"}}{"ip_addr":"192.168.20.20","name":"lisi","gender":"male","telephone":"333333","address":"yyy","email":"lisi@qq.com"}{"create":{"_index":"cluster-linux-elk-2024"}}{"ip_addr":"172.28.30.101","name":"wangwu","gender":"female","telephone":"44444","address":"zzz","email":"wangwu@qq.com"}{"create":{"_index":"cluster-linux-elk-2024"}}{"ip_addr":"172.28.50.15","name":"zhaoliu","gender":"female","telephone":"55555","address":"ddd","email":"zhaoliu@qq.com"}{"create":{"_index":"cluster-linux-elk-2024"}}{"ip_addr":"10.0.0.67","name":"xiaoli","gender":"male","telephone":"66666","address":"aaa","email":"xiaoli@qq.com"}​# 基于genders搜索FET http://192.168.1.10:9200/cluster-linux-elk-2024/_search{"query":{"match":{"gender":"female"}}}​# 注意:type类型为keyword的查询时得一致,反之;index默认为true,代表可以查询,反之

6、中文分词器官

6.1、内置的标准分词器-分析英文

 # 标准分词器模式使用空格和符号进行切割分词的;GET http://192.168.1.10:9200/_analyze{"analyzer":"standard","text":"My name is Zhangsan and I'm 18 years old !"}

6.2、内置的标准分词器-分析中文并不友好

 # 标准分词器模式使用单个汉字进行分隔;GET http://192.168.1.10:9200/_analyze{"analyzer":"standard","text":"我爱北京天安门!"}

6.3、下载中文分词器

 https://github.com/medcl/elasticsearch-analysis-ik

安装IK分词器

 install -d /cluster/softwares/es/plugins/ik -o elsearch -g elsearchcd /cluster/softwares/es/plugins/ikunzip elasticsearch-analysis-ik-7.17.3.zip rm -f elasticsearch-analysis-ik-7.17.3.zipchown -R elsearch:elsearch *

重启ES节点,使其加载插件;

 systemctl restart es

测试IK分词器

 # 细粒度拆分GET http://192.168.1.10:9200/_analyze{"analyzer":"ik_max_word","text":"我爱北京天安门"}​# 粗粒度拆分GET http://192.168.1.10:9200/_analyze{"analyzer":"ik_smart","text":"我爱北京天安门"}

6.7、自定义字典

 # 进入到IK分词器的插件安装目录cd /cluster/softwares/es/plugins/ik/config​# 自定义字典cat > cluster-linux.dic << 'EOF'上号EOFchown elsearch:elsearch cluster-linux.dic​# 加载自定义字典vim IKAnalyzer.cfg.xml..<entry key="ext_dict">cluster-linux.dic</entry>​# 重启ES集群systemctl restart es​# 测试分词器GET http://192.168.1.10:9200/_analyze{"analyzer":"ik_smart","text":"嗨,哥们,上号!"}

致谢

在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。 

学习永无止境,让我们共同进步!!

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

STM32CubeMX CAN收发数据

目录 一、CAN总线 1. 差分信号 2. CAN收发器 3. CAN帧结构 4. CAN波特率设置 5. 标识符筛选 二、CubeMX配置 三、Keil代码 一、CAN总线 CAN&#xff08;Controller Area Network&#xff0c;控制器局域网络&#xff09;是一种用于车辆、工业自动化等领域的通信协议&…

springboot博客系统

基于springbootvue实现的博客系统 &#xff08;源码L文ppt&#xff09;4-031 4 系统设计 博客系统的整体结构设计主要分为两大部分&#xff1a;管理员和博主。他们的权限不同&#xff0c;于是操作功能也有所不同。整体结构设计如图4-2所示。 图4-2 系统结构图 4.3 数据库设…

Unity(2022.3.41LTS) - 角色控制器和3D刚体

目录 一. 角色控制 二. 3D刚体 一. 角色控制 名称&#xff1a;功能&#xff1a;坡度限制将碰撞器限制为仅爬升比指示值更陡峭&#xff08;以度为单位&#xff09;的斜坡。步长偏移只有当楼梯离地面比指示值更近时&#xff0c;角色才会爬上楼梯。此值不应大于 Character Contr…

《CounTR: Transformer-based Generalised Visual Counting》CVPR2023

摘要 本论文考虑了通用视觉对象计数问题&#xff0c;目标是开发一个计算模型&#xff0c;用于计算任意语义类别的对象数量&#xff0c;使用任意数量的“样本”&#xff08;即可能为零样本或少样本计数&#xff09;。作者提出了一个新颖的基于Transformer的架构&#xff0c;称为…

shell 学习笔记:变量、字符串、注释

目录 1. 变量 1.1 定义使用变量 1.2 变量命名规则 1.3 只读变量 1.4 删除变量 1.5 变量类型 1.5.1 字符串变量 1.5.2 整数变量 1.5.3 数组变量 1.5.3.1 整数索引数组 1.5.3.2 关联数组 1.4 环境变量 1.5 特殊变量 2. 字符串 2.1 单引号字符串 2.2 双引…

【32项目】基于stm32f103c8t6WIFI远程监控智慧农业大棚(含完整代码)

目录 前言 设计背景 设计原理 所需材料 JW01二氧化碳传感器介绍 YL-69土壤湿度传感器介绍 PCB及原理图 部分代码&#xff08;完整代码见文章末尾&#xff09; 前言 随着农业现代化的发展&#xff0c;智慧农业的概念越来越受到重视。智慧农业利用物联网、大数据、人工智…

计算机网络 数据链路层2

ALOHA:想发就发 CSMA 载波监听多路访问协议 CS&#xff1a;载波监听&#xff0c;在发送数据之前检测总线上是否有其他计算机在发送数据 1-坚持CSMA:主机想发送消息&#xff0c;需要监听信道&#xff1b; 信道空闲则直接传输信息&#xff1b; 信道忙碌则一直监听&#xff0c;直…

【JavaWeb】JDBCDruidTomcat入门使用

本章使用技术版本&#xff1a; Tomcatv10.1.25 关于javaweb相关的其他技术&#xff0c;比如tomcat和maven&#xff0c;在我的主页记录了笔记&#xff0c;ajax我用的是本地笔记以后再考虑上传&#xff0c;前端三板斧我用的菜鸟教程文档 JDBC 初识 JDBC概念 JDBC 就是使用Jav…

【深度学习 transformer】使用pytorch 训练transformer 模型,hugginface 来啦

Hugging Face是一个致力于开源自然语言处理&#xff08;NLP&#xff09;和机器学习项目的社区。它由几个关键组件组成&#xff1a; Transformers&#xff1a;这是一个基于PyTorch的库&#xff0c;提供了各种预训练的NLP模型&#xff0c;如BERT、GPT、RoBERTa、DistilBERT等。它…

SEO之网站结构优化(十四-内部链接及权重分配3)

初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; 1、我给不会敲代码又想搭建网站的人建议 2、“新手上云”能够为你开启探索云世界的第一步 博客&#xff1a;阿幸SEO~探索搜索排名之道 7、锚文字分布及变化 前面…

WebGIS与WebGL是什么,两者之间的关系?

WebGL和 WebGlS 都是 web 技术领域的重要内容&#xff0c;特别是这几年webgis开发领域&#xff0c;和webgl打交道是必然的&#xff0c;常见的WebGL开发的基础上&#xff0c;比如二维的Leaflet、三维的Cesium也都是热门。 WebGL是一种基于 HTML5 Canvas 元素的 JavaScriptAPI&a…

RLHF(带有人类反馈的强化学习)初探

我的目标是&#xff0c;在决策游戏上学习某人风格&#xff0c;可以让人对战“带有某人风格”的AI&#xff0c;比如你可以在这里对战“sky风格的AI”,这样的效果。 我最开始受到的启发来源于xbox的广告《爸爸的幽灵车》&#xff0c;已故人在游戏中留下的速度记录的固定轨迹。 …

IOS17.0安装巨魔:TrollRestore巨魔发布

&#x1f47b; TrollRestore 17.0 巨魔发布 15.0 - 16.7 RC&#xff08;20H18&#xff09;和17.0。 官网&#xff1a;https://trollrestore.com/ 下载&#xff1a;https://pan.metanetdisk.com/IOS/%E5%B7%A8%E9%AD%94%E7%8E%A9%E5%AE%B6/TrollRestore.com 使用&#xff1a;ht…

【数字人】Facevid2vid:用于视频会议的一次性自由视图说话头合成

论文&#xff1a;https://arxiv.org/pdf/2011.15126 github:GitHub - zhanglonghao1992/One-Shot_Free-View_Neural_Talking_Head_Synthesis: Pytorch implementation of paper "One-Shot Free-View Neural Talking-Head Synthesis for Video Conferencing" 一种新颖…

缓存分布式一致性问题

缓存一致性问题发生的原因&#xff0c;是在更新数据时数据库和缓存数据的不一致。我们要做到保证缓存的最终一致性。如果数据需要强一致性建议直接查询数据库。 双写模式 双写模式为先写数据库&#xff0c;在写缓存。 进来两个请求&#xff0c;先执行“请求1”的操作写入数据…

装WebVideoCreator记录

背景&#xff0c;需要在docker容器内配置WebVideoCreator环境&#xff0c;配置npm、node.js https://github.com/Vinlic/WebVideoCreatorWebVideoCreator地址&#xff1a;https://github.com/Vinlic/WebVideoCreator 配置环境&#xff0c;使用这个教程&#xff1a; linux下安…

Spring Boot-自定义banner

在 Spring Boot 应用中&#xff0c;你可以自定义启动时显示的 banner。这些 banner 可以包括图形、文字或者其他形式的标识。如图所示&#xff1a; 1. 使用 banner.txt 文件 默认情况下&#xff0c;Spring Boot 使用项目的 banner.txt 文件中的内容作为启动时的 banner。你可以…

文献阅读:对区域间皮层投射神经元命运多样性的时间控制

文献介绍 文献题目&#xff1a; 对区域间皮层投射神经元命运多样性的时间控制 研究团队&#xff1a; Denis Jabaudon&#xff08;瑞士日内瓦大学&#xff09; 发表时间&#xff1a; 2021-11-09 发表期刊&#xff1a; Nature 影响因子&#xff1a; 49.9&#xff08;2021年&am…

关于电力系统的几个疑问

非电力专业人员对于电力中的某些知识不能够形成系统的认识&#xff0c;接下有空也有补充下这方面知识&#xff0c;吹水时候才有水可以吹&#xff0c;嘻嘻&#xff01;这里舍不得删掉下边chatgpt这几张图片&#xff0c;暂时先保留着。因为一直有个因为在电网里边用发电端和用电端…

EmguCV学习笔记 C# 9.3 移动检测类

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…