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

Elasticsearch 索引库操作 文档操作

索引库就类似数据库表,mapping映射就类似表的结构。要向es中存储数据,必须先创建“库”和“表”。

mapping映射属性

mapping是对索引库中文档的约束,常见的mapping属性包括:

  • type: 字段数据类型,常见的简单类型有:
    • 字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)
    • 数值:longintegershortbytedoublefloat
    • 布尔:boolean
    • 日期:date
    • 对象:object
  • index: 是否创建索引,默认为true
  • analyzer: 使用哪种分词器
  • properties: 该字段的子字段

索引库的CRUD

创建索引库和映射

  • 请求方式:PUT
  • 请求路径:/索引库名,可以自定义
  • 请求参数:mapping映射

格式:

PUT /索引库名称
{"mappings": {"properties": {"字段名":{"type": "text","analyzer": "ik_smart"},"字段名2":{"type": "keyword","index": "false"},"字段名3":{"properties": {"子字段": {"type": "keyword"}}},// ...略}}
}

例如:
在这里插入图片描述

查询索引库

  • 请求方式:GET
  • 请求路径:/索引库名
  • 请求参数:无
GET /索引库名

例如
在这里插入图片描述

修改索引库

倒排索引结构虽然不复杂,但是一旦数据结构改变(比如改变了分词器),就需要重新创建倒排索引,这简直是灾难。因此索引库一旦创建,无法修改mapping

虽然无法修改mapping中已有的字段,但是却允许添加新的字段到mapping中,因为不会对倒排索引产生影响。

PUT /索引库名/_mapping
{"properties": {"新字段名":{"type": "integer"}}
}

例如
在这里插入图片描述

删除索引库

  • 请求方式:DELETE
  • 请求路径:/索引库名
  • 请求参数:无
DELETE /索引库名

在kibana中测试:
在这里插入图片描述

文档的CRUD

新增文档

语法:

POST /索引库名/_doc/文档id
{"字段1": "值1","字段2": "值2","字段3": {"子属性1": "值3","子属性2": "值4"},// ...
}

示例:

在这里插入图片描述

查询文档

根据rest风格,新增是post,查询应该是get,不过查询一般都需要条件,这里我们把文档id带上。

语法:

GET /{索引库名称}/_doc/{id}

通过kibana查看数据:

在这里插入图片描述

删除文档

删除使用DELETE请求,同样,需要根据id进行删除:

语法:

DELETE /{索引库名}/_doc/id值

示例:

在这里插入图片描述

修改文档

修改有两种方式:

  • 全量修改:直接覆盖原来的文档
  • 增量修改:修改文档中的部分字段
全量修改

全量修改是覆盖原来的文档,其本质是:

  1. 根据指定的id删除文档
  2. 新增一个相同id的文档

注意:如果根据id删除时,id不存在,第二步的新增也会执行,也就从修改变成了新增操作了。

语法:

PUT /{索引库名}/_doc/文档id
{"字段1": "值1","字段2": "值2",// ... 略
}

示例:
在这里插入图片描述

增量修改

增量修改是只修改指定id匹配的文档中的部分字段。

语法:

POST /{索引库名}/_update/文档id
{"doc": {"字段名": "新的值",}
}

示例:

在这里插入图片描述

相关文章:

  • html5cssjs代码 005 小学数学四则运算练习
  • 揭秘亚马逊:如何获取高质量产品评价?
  • 基于pci多功能采集卡——pci9640
  • C goto 语句
  • 查找和最小的 K 对数字
  • D7805 ——体积小,成本低,性能好
  • spring boot使用mybatisplus访问mysql的配置流程
  • Python通过SFTP实现网络设备配置备份
  • AI技术崛起:数据可视化之路更近
  • Github 2024-03-13 开源项目日报 Top10
  • python中文件、文件夹的操作利器——shutil模块
  • 离线强化学习Offline Reinforcement Learning
  • CSS3新增了哪些新特性?
  • 进程间通信——IPC(Linux)
  • vue的生命周期有那些
  • 【Leetcode】101. 对称二叉树
  • JavaScript 如何正确处理 Unicode 编码问题!
  • Django 博客开发教程 16 - 统计文章阅读量
  • ES6语法详解(一)
  • Flannel解读
  • Java Agent 学习笔记
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Python打包系统简单入门
  • ReactNativeweexDeviceOne对比
  • vue.js框架原理浅析
  • 动态规划入门(以爬楼梯为例)
  • 汉诺塔算法
  • 山寨一个 Promise
  • 算法-图和图算法
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (八)Flask之app.route装饰器函数的参数
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (转)VC++中ondraw在什么时候调用的
  • (转载)Linux 多线程条件变量同步
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • **python多态
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .Net MVC4 上传大文件,并保存表单
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net 流——流的类型体系简单介绍
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET建议使用的大小写命名原则
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • .net中生成excel后调整宽度
  • .Net转前端开发-启航篇,如何定制博客园主题
  • [ 数据结构 - C++]红黑树RBTree
  • []常用AT命令解释()
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [BZOJ 1040] 骑士