当前位置: 首页 > 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…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...