Elasticsearch学习笔记(2)

server/2024/12/23 1:52:13/

索引库操作

在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" } }

http://www.ppmy.cn/server/126525.html

相关文章

数据特征工程:如何计算块熵?| 基于SQL实现

目录 0 信息量定义 1 块熵定义 2 问题描述 ​3 数据准备 4 问题分析 5 小结 0 信息量定义 信息量是指从N 个相等可能事件中选出一个事件所需要的信息度量或含量,也就是在辩识N 个事件中特定的一个事件的过程中所需要提问是或否的最少次数。 在一个系统中,等可能事件的数…

Vue3项目开发——新闻发布管理系统(九)(完结篇)

文章目录 十一、用户信息管理1、用户基本资料管理1.1 页面设计1.2 封装接口,更新信息2、更换头像2.1 静态结构2.2 选择图片预览2.3 上传头像3、重置密码3.1 页面设计3.2 封装接口,更新密码十二、项目打包十三、系统全部源码下载十一、用户信息管理 用户信息管理包括功能:基…

UML中类和类之间关系和各种图

文章目录 1.UML概述2.UML建模工具3.常见UML图_类图4.类图之类和类之间的关系5.用例图1.用例图是什么2.用例图所包含的元素3.用例图所包含的关系 6.状态图1.状态图是什么?2.状态图所包含的元素 7.活动图1.活动图的元素 8.时序图1.时序图是什么?2.时序图的…

【Git原理与使用】Git初识基本操作

Git初识&&基本操作 1.初识Git2.Git安装3.Git基本操作3.1创建Git本地仓库3.2配置Git3.3认识工作区、暂存区、版本库3.4添加文件3.5修改文件3.6版本回退3.7撤销修改3.8删除文件 点赞👍👍收藏🌟🌟关注💖&#x1f…

基于微信的乐室预约小程序+ssm(lw+演示+源码+运行)

摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个…

Springboot + netty + rabbitmq + myBatis

目录 0.为什么用消息队列1.代码文件创建结构2.pom.xml文件3.三个配置文件开发和生产环境4.Rabbitmq 基础配置类 TtlQueueConfig5.建立netty服务器 rabbitmq消息生产者6.建立常规队列的消费者 Consumer7.建立死信队列的消费者 DeadLetterConsumer8.建立mapper.xml文件9.建立map…

MongoDB 快速入门+单机部署(附带脚本)

目录 介绍 体系结构 数据模型 BSON BSON 数据类型 特点 高性能 高可用 高扩展 丰富的查询支持 其他特点 部署 单机部署 普通安装 脚本安装 Docker Compose 安装 卸载 停止 MongoDB 删除包 删除数据目录 参考: https://docs.mongoing.com/ 介绍…

我店生活系统小程序开发功能解析

一、市场定位与目标用户 市场定位:我店生活小程序旨在打造一个集购物、娱乐、服务于一体的综合性本地生活服务平台,满足用户多样化的生活需求。通过整合周边生活服务资源,提供一站式的生活服务体验。 目标用户:主要面向中青年人…