ElasticSearch-索引和文档的创建修改删除

news/2024/11/2 11:37:17/

目录

一、创建索引

二、查看索引

三、索引是否存在

四、删除索引

五、创建文档

六、查看文档

七、更新文档

八、文档是否存在

九、删除文档


一、创建索引

# 创建一个默认的索引,默认是标准分词器的索引
PUT /es_db2# 创建一个默认为ik分词器的索引
PUT /es_db3
{"settings": {"index": {"analysis.analyzer.default.type": "ik_max_word"}}
}

结果:

二、查看索引

语法: GET 索引名称

# 查看索引信息
GET es_db2GET es_db3

 从这两个索引信息来看,es_db2是标准分词器的索引,es_db3是ik分词器索引。

三、索引是否存在

语法:HEAD 索引名称

# 判断索引是否存在,如果存在则返回200,不存在则返回错误信息
HEAD es_db2
HEAD es_db4

 

 在通过HEAD 命令查询 es_db2索引的时候返回200。查询 es_db4的时候返回404表示该索引不存在。

四、删除索引

语法:DELETE 索引名称

DELETE es_db4DELETE es_db3

如果删除一个不存在的索引 es_db4就提示404错误;如果删除一个存在的索引es_db3,返回操作成功。

五、创建文档

语法:PUT或者POST 索引/ _doc/ id可选 进行创建文档(如果原先文档存在则是修改操作)

PUT和POST的区别如下:
PUT必须指定ID; POST可以不指定ID,由es自动生成。
PUT和POST都是删除原来的文档然后在创建新的文档,而不是创建失败。

# POST请求 索引/_doc 能够创建文档成功
POST /es_db1/_doc
{"name":"关羽","age":42,"address":"蜀国荆州2"
}# POST请求 索引/_doc/id 能够创建id为101的文档
POST /es_db1/_doc/101
{"name":"关羽","age":42,"address":"蜀国荆州2"
}# PUT请求 索引/_doc 能够创建文档失败
PUT /es_db1/_doc
{"name":"关羽","age":42,"address":"蜀国荆州2"
}# PUT请求 索引/_doc/id 能够创建文档成功
PUT /es_db1/_doc/104
{"name":"关羽","age":42,"address":"蜀国荆州2"
}

 

 

 PUT请求如果后面_doc/id能成功是因为指定了id才会成功。如果不指定id由于返回数据的id是es自动生成的,不具有幂等性,因此不支持PUT请求。

PUT或POST请求 加 _create 创建索引,只创建一次,如果之前存在则本次创建失败,而不是进行覆盖创建操作。

POST /es_db1/_create/108
{"name":"关羽","age":42,"address":"蜀国荆州2"
}

第一次创建成功

第二次执行的创建命令的时候报如下错误。

 PUT请求如下,以下的请求和上面的POST /es_db1/_create/108的测试结果一致的,就不再截图了。

PUT /es_db1/_create/109
{"name":"关羽","age":42,"address":"蜀国荆州2"
}

小结:在实际使用的时候创建文档时,要尽可能指定文档id,而不是使用系统自动生成的id。

六、查看文档

语法:GET 索引/_doc/id

# 查询document的id=109的数据
GET es_db1/_doc/109

# 查询document的id=1009的数据,该文档不存在则提示 found:false
GET es_db1/_doc/1009

查询某个索引下订单所有数据 索引/_search

# 查询索引es_db1下的所有document数据
GET es_db1/_search

七、更新文档

PUT全量更新,POST部分更新

语法:PUT或者POST 命令  /索引/_doc/id 命令进行全量更新

#PUT全量更新
PUT /es_db1/_doc/109
{"name":"关羽","address":"蜀国荆州4"
}

然后执行GET es_db1/_doc/109命令,看到age属性不见了,说明整个对象的属性都更新了。

 POST 索引/_update/id 进行部分更新

# POST通过_update进行局部更新
POST /es_db1/_update/109
{"doc":{"address":"蜀国荆州5"}
}GET es_db1/_doc/109

这里是更新索引es_db1中id为109的文档的address的属性值。可以看到只进行了部分更新。

八、文档是否存在

语法:HEAD 索引/_doc/id 存在则返回200,否则返回404

HEAD es_db1/_doc/109

九、删除文档

语法:DELETE 索引/_doc/id 

DELETE es_db1/_doc/109

 第一次删除结果是deleted,第二次删除结果是not_found


http://www.ppmy.cn/news/81817.html

相关文章

SAP 物料主数据基本数据1视图 参数有效值 字段的作用测试 <转载>

原文链接:https://blog.csdn.net/weixin_40672823/article/details/104773643 1.在物料主数据基本数据1视图中有个字段 参数有效值 如下图 有什么用途? 这个字段作用主要用在 BOM里面,官方说明如下 看说明很难理解下面通过一个业务实例来说明 业务要…

20年前,微软给金山那刀,现今一举将WPS推上领奖台,WPS,赢了

WPS,赢了 正如姚冬(金山办公副总裁)所说: 文本的命令行到图形界面的那次,改变整个人机交互的方式,我们公司历史上最大的一次危机也是那一次, 但我们依然挺过来了,我们相信这次技术浪…

C++内存管理 (new、delete)知识点+完整思维导图+实操图+深入细节通俗易懂建议收藏

绪论 我成功是因为我有决心,从不踌躇。——拿破仑 本章是关于c内存管理的文章,字数不多,内容简单,希望对你有所帮助!! 话不多说安全带系好,发车啦(建议电脑观看)。 附&a…

打造高效互联网医院系统源码:解读其核心功能及应用

随着互联网的不断普及和发展,互联网医院系统已经成为了现代医疗服务的一个重要组成部分。本文将介绍互联网医院系统的核心功能以及其应用,并提供一些互联网医院系统开发代码。 互联网医院系统是一种基于互联网技术的医疗服务平台,可以通过网…

Python中的全局变量与局部变量

1 定义 全局变量指的是在整个python文件中定义的变量,而局部变量是在函数内部定义的变量。 a 1 def yang_func():b 2 从以上代码中可以看出,变量a是全局变量,变量b是定义在yang_func()函数的内部,因此b是局部变量。 2 使用范…

「SQL面试题库」 No_74 即时食物配送 II

🍅 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试&#xff0…

智能运维应用之道,告别企业数字化转型危机

面临的问题及挑战 数据中心发展历程 2000 年中国数据中心始建,至今已经历以下 3 大阶段。早期:离散型数据中心 IT 因以项目建设为导向,故缺乏规划且无专门运维管理体系,此外,开发建设完的项目均是独立运维维护&#…

Python系列模块之标准库re详解

感谢点赞和关注 ,每天进步一点点!加油! 目录 一、Python 正则表达式 1.1 re模块常用操作 1.2 re.match 1.3 re.search 1.4 re.findall 1.5 re.compile 函数 1.6 re.sub 检索和替换 1.7 re.split拆分 1.8 实战案例:根据文…