elasticsearch6.7 01.入门指南(3)
4、Modifying Your Data(修改数据)
Elasticsearch 提供了近实时的操纵数据和搜索的能力。默认情况下,从索引/更新/删除数据到在搜索结果中显示数据会有 1 秒的延迟(刷新间隔)。这是与其他平台(如SQL) 的一个重要区别,在SQL中,数据在事务完成后立即可用。
4.1 Indexing/Replacing Documents(索引/替换 文档)
我们先前见过如何索引单个文档。让我们再次调用该命令 :
PUT /customer/_doc/1?pretty
{
"name": "John Doe"
}
同样,上面将指定的文档索引到customer索引中,且该文档的ID为1。如果我们再使用不同(或相同)的文档执行上述命令,ElasticSearch将在现有文档的基础上替换(即重新索引)一个ID为1的新文档:
PUT /customer/_doc/1?pretty
{
"name": "Jane Doe"
}
上面将 ID 为 1 的文档的name从“John Doe”改成“Jane Doe”。如果使用的是不同的 ID,那么将为新文档编制索引,并且索引中已有的文档将保持不变。
PUT /customer/_doc/2?pretty
{
"name": "Jane Doe"
}
上面将索引一个 ID 为 2 的新文档。
在索引时,ID 是可选的。如果没有指定id,Elasticsearch 将生成一个随机 ID,然后使用它去索引文档。ElasticSearch生成的实际ID(或在前面的示例中显式指定的任何内容)作为索引API调用的一部分返回。
该例子演示了在没有明确的 ID 的情况下如何去索引一个文档 :
POST /customer/_doc?pretty
{
"name": "Jane Doe"
}
注意,在上述的情况下,我们使用了 POST 而不是 PUT,因为我们没有指定 ID。
4.2 Updating Documents(更新文档)
除了可以索引和替换文档之外,我们也可以更新文档。不过,请注意Elasticsearch实际上并不是对指定的文档进行更新。每当我们做一次更新,Elasticsearch都会删除旧文档,然后索引一个新文档,并一次性对其应用更新。
下例演示了将name字段更改为“Jane Doe”来更新ID为1的旧文档:
POST /customer/_update/1?pretty
{
"doc": { "name": "Jane Doe" }
}
下例演示了将name字段更改为“Jane Doe”来更新ID为1的旧文档,并同时向其添加age字段:
POST /customer/_update/1?pretty
{
"doc": { "name": "Jane Doe", "age": 20 }
}
也可以使用简单的scripts(脚本)来执行更新。下例演示了使用scripts来将 age增加 5 :
POST /customer/_update/1?pretty
{
"script" : "ctx._source.age += 5"
}
在上面的例子中,ctx._source 代表当前将被更新的源文档。
Elasticsearch提供了在给定查询条件(如SQL UPDATE-WHERE语句)下更新多个文档的功能。请参阅docs-update-by-query API
4.3 Deleting Documents(删除文档)
删除文档是很简单的,下例演示了如何删除ID 为 2 的 customer(的文档)。
DELETE /customer/_doc/2?pretty
请看 Delete By Query API 以删除指定查询匹配到的所有文档。
值得注意的是,直接删除整个索引比使用Delete By Query API更有效。
4.4 Batch Processing(批处理)
除了可以索引,更新,和删除单个文档之外,Elasticsearch 还提供了使用 _bulk API 来执行上面任何操作的批量方式的能力。这个功能是非常重要,它提供了一种非常有效的机制,可以尽可能减少网络返回且尽可能快的执行多个操作。
举一个简单的例子,在下面一个批量操作中索引了两个文档(ID 1 - John Doe 和 ID 2 - Jane Doe):
POST /customer/_bulk?pretty
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }
下例使用一个批量操作更新了第一个文档(ID 为 1),删除了第二个文档(ID 为 2) :
POST /customer/_bulk?pretty
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}
请注意上面的删除操作,在它后面没有相关的源文档,因为删除操作只需要根据文档的 ID 来删除。
Bulk API不会因其中一个操作失败而失败。如果单个操作因任何原因失败,bulk操作将继续处理它后面的其他操作。当Bulk API返回时,它将为每个操作提供一个状态(按照发送的顺序),以便您可以检查特定操作是否失败。
elasticsearch6.7 01.入门指南(3)的更多相关文章
- elasticsearch6.7 01.入门指南(2)
2.安装(略) 默认情况下,elasticsearch 使用端口 9200 来访问它的 REST API.如果有必要,该端口也可以配置 3.探索集群 3.1 The REST API 既然我们已经启动 ...
- elasticsearch6.7 01.入门指南(4)
5.Exploring Your Data(探索数据) Sample Dataset(样本数据集) 现在我们已经学会了基础知识,让我们尝试在更真实的数据集上操作.我准备了一份顾客银行账户信息的虚构的 ...
- elasticsearch6.7 01.入门指南(1)
Elasticsearch 是一个高度可扩展且开源的全文检索和分析引擎.它可以让您快速.近实时地存储.检索以及分析海量数据.它通常用作那些具有复杂搜索功能和需求的应用的底层引擎或者技术. 下面是 El ...
- 现代OpenGL教程 01 - 入门指南
原文链接传送门 译序 早前学OpenGL的时候还是1.x版本,用的都是glVertex,glNormal等固定管线API.后来工作需要接触DirectX9,shader也只是可选项而已,跟固定管线一起 ...
- AngularJS快速入门指南01:导言
AngularJS使用新的attributes扩展了HTML AngularJS对单页面应用的支持非常好(SPAs) AngularJS非常容易学习 现在就开始学习AngularJS吧! 关于本指南 ...
- AngularJS快速入门指南02:介绍
AngularJS是一个JavaScript框架.它可以通过<script>标记被添加到HTML页面中. AngularJS通过指令对HTML属性进行了扩展,然后通过表达式将数据绑定到HT ...
- 《Gulp 入门指南》 : 使用 gulp 压缩 JS
<Gulp 入门指南> : 使用 gulp 压缩 JS 请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 访问论坛获取帮助 压缩 js 代码可降低 js 文件大小,提高页面打 ...
- RequireJS 入门指南
RequireJS 入门指南 http://requirejs.org/ 简介如今最常用的JavaScript库之一是RequireJS.最近我参与的每个项目,都用到了RequireJS,或者是我向它 ...
- 《KAFKA官方文档》入门指南(转)
1.入门指南 1.1简介 Apache的Kafka™是一个分布式流平台(a distributed streaming platform).这到底意味着什么? 我们认为,一个流处理平台应该具有三个关键 ...
随机推荐
- winform改变启动界面
我们知道,有时做个小项目什么的,一般从登录开始,再到主页,再到其他业务,如果做到其他页面功能,调试时还要从登录页面一个个点进去,明显的降低开发进度. 这时,我们可以直接将目标界面改为启动页面即可. u ...
- Beta冲刺 (5/7)
Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 共享编辑文章的后端数据处理 部分代码 ...
- Springboot高版本中@ConfigurationProperties注解取消location属性
在spring boot 1.5 版本之前 在@ConfigurationProperties注释中有两个属性:locations:指定配置文件的所在位置prefix:指定配置文件中键名称的前缀 sp ...
- hdu 4034
比赛时才发现自己基础算法都忘得光光了,逆向floyd i->j经过k点,只要i到j的距离大于或者等于,就把这边标记,实为去掉...此时整个图就减一条边 #include<iostream& ...
- Js表单验证控件-02 Ajax验证
在<Js表单验证控件(使用方便,无需编码)-01使用说明>中,写了Verify.js验证控件的基本用法,基本可以满足大多数验证需求,如果涉及服务端的验证,则可以通过Ajax. Ajax验证 ...
- APK防护——Anti_Virtual App的思路和实现
作者:HAI_i 原文来自:https://bbs.ichunqiu.com/thread-42982-1-1.html 0×00 前言 Virtual App是一个很强大的存在,破坏了Android ...
- phpMyAdmin 4.7.x CSRF 漏洞利用
作者:Ambulong phpMyAdmin是个知名MySQL/MariaDB在线管理工具,phpMyAdmin团队在4.7.7版本中修复了一个危害严重的CSRF漏洞(PMASA-2017-9),攻击 ...
- 面试时遇到的题目。正则,replace()
function Fn(str){ this.str = str; } Fn.prototype.format = function(){ var arg = arguments; var dd = ...
- web API简介(四):客户端储存之IndexedDB API
概述 前篇:web API简介(三):客户端储存之Web Storage API 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据. Index ...
- spring框架学习笔记2:配置详解
简单写一个类做示例: package bean; public class User { private String name; private Integer age; public String ...