当前位置: 首页 > news >正文

Elasticsearch学习笔记(2)

索引库操作

在Elasticsearch中,Mapping是定义文档字段及其属性的重要机制。

Mapping映射属性

type:字段数据类型

1、字符串:

  • text:可分词的文本,适用于需要全文检索的情况。
  • keyword:用于存储精确值,如品牌、国家名、IP地址等,不进行分词。

2、数值:

  • long:64位整数。
  • integer:32位整数。
  • short:16位整数。
  • byte:8位整数。
  • double:双精度浮点数。
  • float:单精度浮点数。

3、布尔:boolean:只接受true或false。

4、日期:date:用于存储日期和时间,支持多种格式。

5、对象:object:用于嵌套结构,可以包含多个字段。

index:

指定该字段是否创建索引,默认为true。如果设置为false,该字段将不会被索引,无法用于检索。

analyzer:

指定字段使用的分词器,影响如何处理文本数据。例如,常用的分词器有standard、whitespace、simple等。

properties:

定义该字段的子字段,用于更复杂的结构,例如嵌套对象。

以下是一个示例JSON文档,

{"age": 30,"weight": 70.5,"isMarried": true,"info": "这是一段关于个人信息的文本,需要进行分词处理。","email": "example@example.com","score": 95.5,"name": {"firstName": "John","lastName": "Doe"}
}

对应的每个字段映射(Mapping): 

索引库的CRUD 

在Elasticsearch中,CRUD(创建、读取、更新和删除)操作可以通过RESTful API进行。 

创建索引

PUT /my_index
{"settings": {"number_of_shards": 1,"number_of_replicas": 1},"mappings": {"properties": {"age": { "type": "integer" },"weight": { "type": "float" },"isMarried": { "type": "boolean" },"info": { "type": "text" },"email": { "type": "keyword" },"score": { "type": "float" },"name": {"properties": {"firstName": { "type": "keyword" },"lastName": { "type": "keyword" }}}}}
}

创建文档 

POST /my_index/_doc/1
{"age": 30,"weight": 70.5,"isMarried": true,"info": "这是一段关于个人信息的文本,需要进行分词处理。","email": "example@example.com","score": 95.5,"name": {"firstName": "John","lastName": "Doe"}
}

读取文档

GET /my_index/_doc/1

更新文档

POST /my_index/_doc/1/_update
{"doc": {"weight": 72.0}
}

删除文档

DELETE /my_index/_doc/1

删除索引

DELETE /my_index

总结

  • 创建索引: 使用 PUT 请求来定义索引及其映射。
  • 创建文档: 使用 POST 请求将数据添加到索引。
  • 读取文档: 使用 GET 请求获取特定文档。
  • 更新文档: 使用 POST 加上 _update 操作来修改现有文档。
  • 删除文档: 使用 DELETE 请求删除指定文档。
  • 删除索引: 使用 DELETE 请求删除整个索引。 

文档操作

在Elasticsearch中,可以通过RESTful API对文档进行增、删、改、查等操作。

添加文档(创建)

使用 POST 请求向索引中添加新的文档。每个文档都是一个JSON对象。

POST /my_index/_doc/1
{"age": 30,"weight": 70.5,"isMarried": true,"info": "这是一段关于个人信息的文本。","email": "example@example.com","score": 95.5,"name": {"firstName": "John","lastName": "Doe"}
}

读取文档(查询)

使用 GET 请求读取特定的文档。

GET /my_index/_doc/1

也可以使用搜索功能查找多个文档:

GET /my_index/_search
{"query": {"match": {"name.firstName": "John"}}
}

修改文档

在Elasticsearch中,修改文档可以通过全量修改和局部修改两种方式进行:

1. 全量修改

全量修改会直接覆盖原来的文档内容。使用 PUT 请求来实现。

PUT /my_index/_doc/1
{"age": 30,"weight": 70.5,"isMarried": true,"info": "这是一段关于个人信息的文本。","email": "example@example.com","score": 95.5,"name": {"firstName": "John","lastName": "Doe"}
}

2. 局部修改

局部修改只会修改文档中的部分字段,而不影响其他字段。使用 POST 请求加上 _update 操作来实现。

POST /my_index/_doc/1/_update
{"doc": {"weight": 72.0,"isMarried": false}
}

在这个例子中,只有 weight 和 isMarried 字段被更新,其他字段保持不变。

总结

  • 全量修改: 使用 PUT 请求,覆盖整个文档。
  • 局部修改: 使用 POST 请求加 _update,仅修改指定的字段。

删除文档

使用 DELETE 请求删除特定的文档。

DELETE /my_index/_doc/1

批量操作

Elasticsearch支持批量操作,可以一次性添加、更新或删除多个文档。使用 _bulk API。

POST /_bulk
{ "index": { "_index": "my_index", "_id": "2" } }
{ "age": 25, "weight": 60.0, "isMarried": false, "info": "另一段个人信息。", "email": "user2@example.com", "score": 88.0, "name": { "firstName": "Jane", "lastName": "Smith" } }
{ "update": { "_index": "my_index", "_id": "1" } }
{ "doc": { "score": 97.0 } }
{ "delete": { "_index": "my_index", "_id": "3" } }

总结

在Elasticsearch中,文档操作主要包括以下几种:

创建文档:

  • 请求方式:POST
  • 请求格式:/{索引库名}/_doc/文档id
  • 示例:POST /my_index/_doc/1 { "field": "value" }

查询文档:

  • 请求方式:GET
  • 请求格式:/{索引库名}/_doc/文档id
  • 示例:GET /my_index/_doc/1

删除文档:

  • 请求方式:DELETE
  • 请求格式:/{索引库名}/_doc/文档id
  • 示例:DELETE /my_index/_doc/1

修改文档:

全量修改:

  • 请求方式:PUT
  • 请求格式:/{索引库名}/_doc/文档id
  • 示例:PUT /my_index/_doc/1 { "field": "new_value" }

局部修改:

  • 请求方式:POST
  • 请求格式:/{索引库名}/_update/文档id
  • 示例:POST /my_index/_doc/1/_update { "doc": { "field": "updated_value" } }

相关文章:

Elasticsearch学习笔记(2)

索引库操作 在Elasticsearch中,Mapping是定义文档字段及其属性的重要机制。 Mapping映射属性 type:字段数据类型 1、字符串: text:可分词的文本,适用于需要全文检索的情况。keyword:用于存储精确值&am…...

Vue devtools 插件

一、安装 去这下载https://chrome.zzzmh.cn/ 打开chrome的扩展程序 再打开开发模式 把刚才下载的拖到这里 然后把它固定到工具栏 就是这样了。 二、使用 程序通过open on live server后&#xff0c;打开开发者工具&#xff0c;找到vue就可以了。 这是代码 <div id"ap…...

Ubuntu 16.04安装填坑记录

一. 问题描述&#xff1a; &#xff08;1&#xff09;Ubuntu 16.04使用USB启动盘安装时&#xff0c;出现"try ubuntu without installation"或“install ubuntu”选择&#xff0c;Enter选择安装后&#xff0c;显示器黑屏无任何显示。 原因分析&#xff1a; 显示黑…...

python的pyinstaller

1、pyinstaller --onefile -w *.py 可以生成可执行文件 -w就是不需要有console窗体出现、 2、 console窗体会出现一些警告。 比如 Warning: QT_DEVICE_PIXEL_RATIO is deprecated. Instead use: QT_AUTO_SCREEN_SCALE_FACTOR to enable platform plugin controlled per-scre…...

Vue3(五) 组件通信大汇总

文章目录 一、props二、自定义事件三、mitt四、v-model1.v-model的本质2.v-model用在组件标签上3.更换modelValue4.更换modelValue时&#xff0c;可以在组件标签上多次使用v-model 五、$attrs六、$refs,与&#xffe5;parent1. 回顾标签ref属性修改组件信息2. $refs实现父修改所…...

红队信息搜集扫描使用

红队信息搜集扫描使用 红队行动中需要工具化一些常用攻击&#xff0c;所以学习一下 nmap 等的常规使用&#xff0c;提供灵感 nmap 帮助 nmap --help主机扫描 Scan and no port scan&#xff08;扫描但不端口扫描&#xff09;。-sn 在老版本中是 -sP&#xff0c;P的含义是 P…...

Python自学查漏9.28

自学查漏9.28 一、环境安装&代码执行原理&变量命名 安装 Python 代码执行原理 解析&#xff08;Parsing&#xff09;: 当你运行一个 Python 脚本时&#xff0c;Python 解释器首先会解析整个代码&#xff0c;将其转换成一种叫做“字节码”&#xff08;bytecode&…...

Java文件I/O处理之RandomAccessFile【随意存取文件】

Java语言有一个处理文件输入输出的RandomAccessFile类&#xff0c;既可以读取文件内容&#xff0c;也可以向文件输出数据。 RandomAccessFile类在国内的技术文档和书籍中都翻译为“随机访问文件”类&#xff0c;确实令人不解。 在中文中“随机”的意思&#xff1a; 不设任何条…...

Android页面跳转与返回机制详解

在Android开发中&#xff0c;页面跳转是实现应用功能交互的重要手段之一。本文将从Activity之间的跳转、Activity与Fragment之间的跳转、Fragment之间的跳转以及页面返回的问题四个方面进行详细解析。 一、Activity之间的跳转 Activity是Android应用的基本构建块&#xff0c;…...

Elasticsearch学习笔记(1)

初识 Elasticsearch 认识和安装 Elasticsearch 是由 Elastic 公司开发的一套强大的搜索引擎技术&#xff0c;属于 Elastic 技术栈的一部分。完整的技术栈包括&#xff1a; Elasticsearch&#xff1a;用于数据存储、计算和搜索。Logstash/Beats&#xff1a;用于数据收集。Kib…...

react是一种语言?

React 不是一种编程语言&#xff0c;而是一种用于构建用户界面的 JavaScript 库。它由 Facebook 开发&#xff0c;并广泛用于开发单页应用程序&#xff08;SPA&#xff09;。React 允许你将 UI 拆分成独立的、可复用的组件&#xff0c;这些组件可以接收输入&#xff08;称为“p…...

如何区分这个ip是真实ip,不是虚假的ip

区分一个IP地址是真实IP还是虚假IP&#xff08;伪造IP&#xff09;是非常重要的&#xff0c;特别是在网络安全、数据采集和其他与IP相关的业务场景中。虚假IP&#xff08;也称为伪造IP或假冒IP&#xff09;可以通过多种方式被创建&#xff0c;如代理、VPN、或IP欺骗&#xff08…...

【软件测试】详解软件测试中的测试级别

目录 一、测试级别二、组件测试三、开发者测试3.1测试与调试3.2 组件测试目标3.3 测试功能 四、稳健性测试4.1 效率的测试4.2 测试可维护性4.3 测试策略4.4 白盒测试 一、测试级别 软件系统通常是由许多子系统组成的&#xff0c;而这些子系统又是由多个组件组成的&#xff0c;…...

一条sql在MySQL中是怎么执行的

目录 一、MySQL总体架构二、各层的作用1、连接层2、应用层3、存储引擎层 一、MySQL总体架构 作为常问八股文&#xff0c;相信不少小伙伴当年都被问到过这个问题&#xff0c;回答这个问题我们首先得知道MySQL服务器基本架构&#xff0c;主要分为连接层&#xff0c;应用层和存储…...

Git | Dockerized GitLab 安装使用(简单实操版)

1. 详细步骤 1.1 安装启动 postgresql 服务 docker pull sameersbn/postgresql:14-20230628docker run --name gitlab-postgresql -d \--env DB_NAMEgitlabhq_production \--env DB_USERgitlab --env DB_PASSpassword \--env DB_EXTENSIONpg_trgm,btree_gist \--volume /srv/…...

SpringCloud简介 Ribbon Eureka 远程调用RestTemplate类 openfeign

〇、SpringCloud 0.区别于单体项目和soa架构&#xff0c;微服务架构每个服务独立&#xff0c;灵活。 1. spring cloud是一个完整的微服务框架&#xff0c;springCloud包括三个体系&#xff1a; spring cloud Netflix spring cloud Alibaba spring 其他 2.spring cloud 版本命名…...

微信小程序开发系列之-微信小程序性能优化

微信小程序开发系列之-微信小程序性能优化 性能优化是任何应用开发中的重要组成部分&#xff0c;尤其是在移动环境中。对于微信小程序而言&#xff0c;随着用户量的增加和应用功能的丰富&#xff0c;性能优化显得尤为关键。良好的性能不仅提升用户体验&#xff0c;还能增加用户…...

线程池面试集

目录 线程池中提交一个任务的流程是怎样的? 线程池有五种状态 如何优雅的停止一个线程? 线程池的核心线程数、最大线程数该如何设置? 如何理解Java并发中的可见性、原子性、有序性? Java死锁如何避免? 线程池中提交一个任务的流程是怎样的? 线程池有五种状态 如何优…...

从密码学看盲拍合约:智能合约的隐私与安全新革命!

文章目录 前言一、什么是盲拍合约&#xff1f;二、盲拍合约的优势1.时间压力的缓解2.绑定与秘密的挑战 三、盲拍合约的工作原理1.提交盲出价2.披露出价3.结束拍卖4.退款机制 四、代码示例总结 前言 随着区块链技术的发展&#xff0c;智能合约在各种场景中的应用越来越广泛。盲…...

c++学习笔记(47)

七、_public.cpp #include "_public.h" // 如果信号量已存在&#xff0c;获取信号量&#xff1b;如果信号量不存在&#xff0c;则创建它并初始化为 value。 // 如果用于互斥锁&#xff0c;value 填 1&#xff0c;sem_flg 填 SEM_UNDO。 // 如果用于生产消费者模型&am…...

如何在安卓设备上安装和配置HMCL-PE:Minecraft Java版移动启动器终极指南

如何在安卓设备上安装和配置HMCL-PE&#xff1a;Minecraft Java版移动启动器终极指南 【免费下载链接】HMCL-PE Hello Minecraft! Launcher for Android 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL-PE 想在手机上畅玩Minecraft Java版却不知从何开始&#xff1f…...

对话式AI智能中继与编排框架:构建高可用AI应用的核心架构

1. 项目概述&#xff1a;一个面向对话式AI的智能中继与编排框架最近在折腾一个挺有意思的开源项目&#xff0c;叫ChatAgentRelay。乍一看这个名字&#xff0c;可能觉得它又是一个聊天机器人框架&#xff0c;但深入把玩之后&#xff0c;我发现它的定位其实更精准&#xff0c;也更…...

KafClaw:Apache Kafka增强型命令行客户端,提升数据操作与调试效率

1. 项目概述与核心价值最近在开源社区里&#xff0c;KafClaw 这个项目引起了不少关注。乍一看这个名字&#xff0c;你可能会联想到 Apache Kafka 和某种“爪子”&#xff08;Claw&#xff09;的结合&#xff0c;没错&#xff0c;这正是它的精髓所在。KafClaw 本质上是一个针对 …...

Newhaven 5.0英寸TFT显示屏技术解析与应用指南

1. Newhaven 5.0英寸TFT显示屏核心特性解析 1.1 3M增强膜技术解析 这款5.0英寸TFT显示屏最显著的技术亮点在于采用了3M专利的增强膜技术。在实际应用中&#xff0c;我发现这种增强膜通过特殊的光学结构设计&#xff0c;能够有效提升背光利用率。具体来说&#xff0c;它采用了多…...

从IMU到UWB:拆解美国队长盾牌自主归位的嵌入式控制核心

1. 项目概述&#xff1a;从电影梦到工程挑战每个看过《美国队长》的人&#xff0c;大概都幻想过能像史蒂夫罗杰斯那样&#xff0c;潇洒地掷出那面标志性的振金盾牌&#xff0c;看着它在空中划出完美的弧线&#xff0c;击倒敌人后又精准地飞回手中。这不仅是超级英雄的浪漫&…...

DLSS Swapper终极指南:5分钟快速上手游戏性能优化神器

DLSS Swapper终极指南&#xff1a;5分钟快速上手游戏性能优化神器 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾为游戏中的DLSS版本过旧而烦恼&#xff1f;是否厌倦了手动下载、替换DLSS文件的繁琐过程&…...

数据库——(DB、DBMS、SQL)

数据库——&#xff08;DB、DBMS、SQL&#xff09; 前言数据库是存放数据的仓库。它的存储空间很大&#xff0c;可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放&#xff0c;是有一定的规则的&#xff0c;否则查询的效率会很低。当今世界是一个充满…...

GAIA-DataSet:如何构建下一代AIOps智能运维的黄金基准?

GAIA-DataSet&#xff1a;如何构建下一代AIOps智能运维的黄金基准&#xff1f; 【免费下载链接】GAIA-DataSet GAIA, with the full name Generic AIOps Atlas, is an overall dataset for analyzing operation problems such as anomaly detection, log analysis, fault local…...

如何在IDEA中打造你的私人阅读空间:3个实用技巧提升编程效率与阅读体验

如何在IDEA中打造你的私人阅读空间&#xff1a;3个实用技巧提升编程效率与阅读体验 【免费下载链接】thief-book-idea IDEA插件版上班摸鱼看书神器 项目地址: https://gitcode.com/gh_mirrors/th/thief-book-idea 在快节奏的编程工作中&#xff0c;如何有效利用碎片化时…...

手动测试射频放大器P1dB:原理、步骤与校准实战指南

1. 项目概述&#xff1a;为什么我们需要手动测试P1dB&#xff1f;在射频放大器、混频器乃至整个收发链路的设计与验证中&#xff0c;1dB增益压缩点&#xff08;P1dB&#xff09;是一个绕不开的核心指标。它直观地告诉工程师&#xff0c;你的器件在多大功率下开始“力不从心”—…...