前面关于es的文章基本上都是添加,修改,更新操作,删除的例子仅仅有根据id删除单条数据的。但作为一个重度使用es的用户,我们肯定得了解所有相关删除操作的命令,才能更加方便的使用和维护es。
通常情况下,删除操作是非常敏感的,这一点不论在关系型数据库,还是nosql数据库都是同样的道理。在es里面也是如此,虽然es大部分时候都是读多写少的系统。
在es里面常用的删除需求,通常如下:
(1)根据某个主键id删除单条数据
(2)根据某个查询条件删除一批数据
(3)删除某个type的数据
(4)删除某个index的数据
(5)清空所有集群的索引数据
本片的例子中,均使用Java Api来完成,其他的方式请参考ES官网文档:
下面来依次看下上面的几个不同方式的删除例子:
(1)根据主键id删除
client.prepareDelete()
.setIndex("spark")
.setType("docsx")
.setId("1")
.execute()
.actionGet();
(2)根据某个查询条件删除一批数据,这个删除非常灵活,灵活的同时,缺点也是
非常明显的,如果操作不当会删除大批数据,所以es官网将其作为一个es的插件功能,非必须情况下,不建议使用此插件(delete-by-query),想使用这个功能,需要提前在服务器集群上安装这个插件,每台机器都要装,装完之后还需要滚动重启,否则不生效,安装方式非常简单,执行下面的命令即可:
bin/plugin install delete-by-query
卸载命令:
bin/plugin remove delete-by-query
如果想要在java中使用,还需要引入下面的pom
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>delete-by-query</artifactId>
<version>2.3.4</version>
</dependency>
此外,在初始化es的client的对象时,需要将插件加入到初始化的方法中:
static Client client = null;
static {
//设置集群名字
Settings settings = Settings.settingsBuilder()
.put("cluster.name", "search")
.put("client.transport.sniff", true)
.build();
//初始化连接客户端
client = new TransportClient.Builder().settings(settings)
.addPlugin(DeleteByQueryPlugin.class)
.addPlugin(ReindexPlugin.class)
.build()
.addTransportAddress(
new InetSocketTransportAddress(
new InetSocketAddress("192.168.10.38",9300)))
}
最后我们看下,如何删除指定查询条件的代码:
new DeleteByQueryRequestBuilder(client,
DeleteByQueryAction.INSTANCE)
.setIndices("spark")
.setTypes("docsx")
.setQuery(QueryBuilders.queryStringQuery("type:3"))
.execute()
.actionGet();
(3)删除某个type的数据,其实也用到了delete-by-query的插件,代码如下:
new DeleteByQueryRequestBuilder(client,
DeleteByQueryAction.INSTANCE)
.setIndices("spark")
.setTypes("docsx")
.setQuery(QueryBuilders.queryStringQuery("*:*"))
.execute()
.actionGet();
(4)删除某个index的数据,代码如下 :
client.admin().indices().delete(new DeleteIndexRequest("spark")).actionGet();
(5)清空整个集群的索引数据,这个操作非常危险,需要注意
new DeleteByQueryRequestBuilder(client,
DeleteByQueryAction.INSTANCE)
.setSource("*")
.execute()
.actionGet();
总结:
删除有风险,操作需谨慎
删除有风险,操作需谨慎
删除有风险,操作需谨慎
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。
分享到:
相关推荐
这篇入门学习笔记将引导初学者了解如何安装、配置以及使用Elasticsearch。 首先,让我们从安装开始。要安装Elasticsearch,你可以访问官方网站(https://www.elastic.co/cn/downloads/elasticsearch)下载最新版本...
ElasticSearch推荐使用RESTful风格进行操作,如PUT用于添加或更新文档,DELETE用于删除,GET用于查询。创建新索引,可以使用PUT请求,例如PUT /newindex/_doc/1,内容为JSON格式的文档。查询时,可以通过GET请求调用...
ElasticSearch学习笔记1 ElasticSearch 简介 ElasticSearch 是基于 Apache Lucene 构建的搜索引擎,使用 Java 编写,提供简单易用的 Restful API,容易横向扩展,支持 PB 级的结构化与非结构化数据处理。Elastic...
本篇笔记将深入探讨Elasticsearch中的核心概念以及基本操作。 首先,Elasticsearch 中的 **索引(index)** 类似于传统关系型数据库的“数据库”,它是一个逻辑空间,用于存储具有相同结构的文档。例如,你可以创建一...
本笔记将围绕Elasticsearch 5的核心概念和功能展开,特别是对于仍然使用或需要了解Elasticsearch 5的用户来说,这些内容非常实用。 1. **核心概念** - **索引(Index)**: 在Elasticsearch中,索引是一个存储文档...
标题 "elasticsearch-analysis-dynamic-synonym-7.12.1.zip" 指的是一个针对Elasticsearch的自定义同义词分析插件,该插件版本为7.12.1。Elasticsearch是一款流行的开源搜索引擎,用于处理、存储、搜索和分析大量...
另外,还可以参考一些封装好的代码库,这些库虽然不一定能直接使用,但能提供很好的参考价值,尤其是一些对API进行封装的示例代码,以及针对特定API的介绍和使用方法。 总的来说,Elasticsearch是一个功能强大、...
本笔记主要记录了 Kibana 的常用操作,涵盖了增删改查操作,以及一些重要的 Elasticsearch 概念。以下是详细的知识点说明: ES 基本概念 * Elasticsearch 是一个基于 Lucene 库的搜索引擎,能够提供高效的搜索和...
**Elasticsearch 7 ...提供的 `elasticsearch.pdf` 文件可能包含了更深入的理论介绍和最佳实践,而 `maguo-es-jd` 和 `maguo-es-api` 文件可能包含具体的代码示例和 API 使用说明,对于初学者来说是很好的学习资源。
- 索引生命周期管理(ILM):Elasticsearch 6 引入了ILM,用于自动管理索引的生命周期,包括热温冷数据分离、滚动索引和删除策略。 1.2 **字段数据类型** - 新增`keyword`类型:支持多值字段,适用于需要排序、...
根据文件提供的信息,我们可以了解到一系列关于Elasticsearch(简称ES)的知识点,包括其基本使用方法、结构化搜索、以及与关系型数据库的对比。以下是详细的知识点梳理: 1. Elasticsearch基本概念和数据结构 ...
掌握XMLHttpRequest对象的使用,以及Promise和async/await的使用,能让你编写出更优雅的异步代码。 五、ES6及后续版本新特性 ES6(ECMAScript 2015)引入了许多新特性,如箭头函数、模板字符串、解构赋值、let/...
DOM提供了操作页面内容的方法,例如document对象可以用来创建、查找、修改和删除节点。document.getElementById用于获取指定ID的元素,querySelector和querySelectorAll则用于根据CSS选择器获取元素。此外,DOM事件...
- ES (Enterprise Server):适用于小型企业的服务器环境。 - WS (Workstation):适用于桌面和工作站环境。 文档中选择了CentOS作为安装目标,这是一个基于RHEL源代码构建的免费发行版,适合学习和测试用途。 #### ...
马士兵老师的课程笔记中,这部分内容着重讲解了如何在Java中处理文件和目录,包括遍历文件树、读写文件以及使用相关工具类。这里我们将详细探讨`ListFilesTree.java`和`ListFilesTree.javabak`这两个文件可能涉及的...
- 使用`rm`命令删除对应的应用程序`.apk`文件。 以上是关于Android学习的基础知识点介绍,涵盖了Android的特性和架构、开发环境配置、运行首个程序以及调试技巧等方面的内容。对于初学者来说,理解这些概念和技术是...
JavaScript可以利用DOM API来操作页面元素,例如添加、删除、修改元素,以及获取元素属性和样式。 3. **事件处理**:JavaScript通过事件监听来响应用户行为,比如点击按钮、滚动页面等。常见的事件有click、...
1. **Elasticsearch (ES) 写入操作**:在ES中,写入操作涉及到文档的索引过程。首先,数据被发送到一个分片,然后经过一系列步骤,如文档的路由、序列化、持久化等,最终存储到磁盘。 2. **HashMap的put操作**:...