Elasticsearch学习笔记(2)

news2024/9/28 23:17:49

索引库操作

在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.coloradmin.cn/o/2175086.html

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

相关文章

二阶低通滤波器(Simulink仿真)

1、如何将S域传递函数转为Z域传递函数 传递函数如何转化为差分方程_非差分方程转成差分方程-CSDN博客文章浏览阅读4.1k次,点赞4次,收藏50次。本文介绍了如何将传递函数转化为差分方程,主要适用于PLC和嵌入式系统。通过MATLAB的系统辨识工具箱获取传递函数,并探讨了离散化方…

OpenCV第十二章——人脸识别

1.人脸跟踪 1.1 级联分类器 OpenCV中的级联分类器是一种基于AdaBoost算法的多级分类器,主要用于在图像中检测目标对象。以下是对其简单而全面的解释: 一、基本概念 级联分类器:是一种由多个简单分类器(弱分类器)级联组…

Yolov10环境配置

参考文章:1.YOLOv10超详细环境搭建以及模型训练(GPU版本)-CSDN博客 2.Windows下安装pytorch教程(下载.whl的方式)_pytorch whl-CSDN博客 安装步骤和文件夹顺序一样 1.安装CUDA和cuDNN 1.1安装CUDA 1.1.1查看当前你的电脑显卡支持的最高CUD…

Docker从入门到精通_02 Docker魔法之旅:零基础Linux用户也能轻松驾驭的安装部署指南

文章目录 Docker从入门到精通_02 Docker魔法之旅:零基础Linux用户也能轻松驾驭的安装部署指南一 操作系统安装二 操作系统环境准备2.1 关闭防火墙2.1.2.2 关闭selinux2.2.1 临时关闭selinux2.2.2 永久关闭selinux 三 docker引擎安装3.1 从get.docker.com 下载 get-d…

02-ZYNQ linux开发环境安装,基于Petalinux2022.2和Vitis2022.2

petalinux安装 Petalinux 工具是 Xilinx 公司推出的嵌入式 Linux 开发套件,包括了 u-boot、Linux Kernel、device-tree、rootfs 等源码和库,以及 Yocto recipes,可以让客户很方便的生成、配置、编译及自定义 Linux 系统。Petalinux 支持 Ver…

了解 如何使用同快充充电器给不同设备快速充电

在这科技发展迅速的时代,快充技术已经走进了我们生活,不得不说有了快充技术的对比,传统的充电模式已经满足不了人们对充电速度的要求。就比如用华为输出100 W快充充电器为手机充电大概需要23分钟充满100%电量,而传统的充电器则需要…

可以免费制作表情包的AI工具来了!

一直想自己制作一套表情包,但一直没有找到好用的工具,要么就是太麻烦,要么就是不免费。 今天AI表情包免费制作工具来了,手机就可以直接做表情包,非常方便。 先看效果~ 工具用到的是通义APP,可以在频道中找…

车辆重识别(利用扩散模型合成有效数据进行行人再识别预训练)论文阅读2024/9/27

[1]Synthesizing Efficient Data with Diffusion Models for Person Re-Identification Pre-Training 作者:Ke Niu1, Haiyang Yu1, Xuelin Qian2, Teng Fu1, Bin Li1, Xiangyang Xue1*单位:1复旦大学, 2西北工业大学 摘要: 现有的行人重识别…

若伊(前后端分离)学习笔记

基础应用篇 1. 若伊搭建 若伊版本 若依官方针对不同开发需求提供了多个版本的框架,每个版本都有其独特的特点和适用场景: 前后端混合版本 :RuoYi结合了SpringBoot和Bootstrap的前端开发框架,适合快速构建传统的Web应用程序&…

画两个数的平方和的曲线

代码1: from mpl_toolkits import mplot3d import numpy as np import matplotlib.pyplot as plt# Creating dataset x np.outer(np.linspace(-3, 3, 32), np.ones(32)) y x.copy().T # transpose z (x **2 y **2 )# Creating figure fig plt.figure(figsize …

Android Studio :The emulator process for AVD was killed。

问题描述&#xff1a; 创建虚拟器&#xff0c;点击运行后提示&#xff1a;<font style"color:rgb(34, 34, 38);">The emulator process for AVD was killed</font> 分析原因&#xff1a; 虚拟机安装路径中包含中文字符导致乱码 > Android Studio …

锦天云中秋之夜团圆家宴圆满成功

2024年9月7日&#xff0c;锦天云&#xff08;深圳&#xff09;计算机设备有限公司 在中国深圳成功举办了“融创智合•月满锦天 锦天云中秋之夜团圆家宴。本次盛会吸引了来自各行业的精英和合作伙伴&#xff0c;大家齐聚一堂&#xff0c;共同庆祝这一传统佳节&#xff0c;此次活…

Subdominator:一款针对漏洞奖励计划的子域名安全枚举工具

关于Subdominator Subdominator是一款针对漏洞奖励计划的子域名安全枚举工具&#xff0c;可用于在漏洞搜寻和侦察过程中进行被动子域名枚举。它旨在通过高效枚举子域名和各种免费被动资源来帮助研究人员和网络安全专业人员发现潜在的安全漏洞。 Subdominator 与各种免费和付费…

Comfyui 学习笔记2

在潜空间放大&#xff0c;三种方法&#xff1a;NNLatentUpscale、Upscale Latent、Upscale Latent&#xff0c;其中只有NNLatentUpscale自带模型优化&#xff0c;其他两种需要KSample重新绘画&#xff0c;NNLatentUpscale后也可以接KSmaple。 像素空间放大&#xff0c;同理&am…

attrs:Python的类装饰器(简化类定义)

在 Python 中&#xff0c;类定义和数据管理是非常常见的编程任务。然而&#xff0c;随着代码的复杂性增加&#xff0c;手动编写大量的 __init__、__repr__ 和 __eq__ 等方法可能会显得冗长和重复。为了解决这些问题&#xff0c;attrs 提供了一个简洁且强大的工具&#xff0c;帮…

HTML|基础|创建一个猫咪信息表单的最佳实践指南

创建一个猫咪信息表单的最佳实践指南 本文将指导你如何创建一个简单而有效的猫咪信息表单。我们将通过 HTML 代码的实例&#xff0c;介绍关键元素和最佳实践&#xff0c;确保表单既易于使用又符合标准。 0. 代码全貌 <!DOCTYPE html> <html lang"en">&…

机器学习:opencv--特征检测

目录 前言 一、 Harris 角点检测 1.基本思想 2.代码实现 二、 SIFT&#xff08;尺度不变特征变换&#xff09; 1.代码实现 前言 特征检测是计算机视觉中的一个重要任务&#xff0c;旨在从图像中提取具有辨识度的关键点或区域。这些特征可以用于后续的图像分析、匹配和识别…

江科大笔记—LED闪烁 LED流水灯 蜂鸣器

LED闪烁& LED流水灯& 蜂鸣器 LED闪烁 第一步&#xff0c;使用RCC开启GPIO时钟。 第二步&#xff0c;使用GPIO_Init函数初始化GPIO。 第三步&#xff0c;使用输出或输入的函数控制GPIO口。 RCC库函数 GPIO库函数&#xff08;先了解这些&#xff09; GPIO的8种输入模…

第十四届蓝桥杯真题Java c组A.求和(持续更新)

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;蓝桥杯关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 【问题描述】 求1(含)至 20230408(含)中每个数的和。 【答案提交】 这是一道结…

景联文科技精准数据标注:优化智能标注平台,打造智能未来

景联文科技是一家致力于为人工智能提供全面数据标注解决方案的专业公司。 拥有一支由经验丰富的数据标注师和垂直领域专家组成的团队&#xff0c;确保数据标注的质量和专业性。 自建平台功能一站式服务平台&#xff0c;提供从数据上传、标注、审核到导出的一站式服务&#xff0…