`
qindongliang1922
  • 浏览: 2172171 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117105
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125446
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59553
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71032
社区版块
存档分类
最新评论

ElasticSearch的一些删除用法笔记

    博客分类:
  • ELK
阅读更多


前面关于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),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。


0
1
分享到:
评论

相关推荐

    Elasticsearch入门学习笔记

    这篇入门学习笔记将引导初学者了解如何安装、配置以及使用Elasticsearch。 首先,让我们从安装开始。要安装Elasticsearch,你可以访问官方网站(https://www.elastic.co/cn/downloads/elasticsearch)下载最新版本...

    ElasticSearch笔记

    ElasticSearch推荐使用RESTful风格进行操作,如PUT用于添加或更新文档,DELETE用于删除,GET用于查询。创建新索引,可以使用PUT请求,例如PUT /newindex/_doc/1,内容为JSON格式的文档。查询时,可以通过GET请求调用...

    ElasticSearch学习笔记1

    ElasticSearch学习笔记1 ElasticSearch 简介 ElasticSearch 是基于 Apache Lucene 构建的搜索引擎,使用 Java 编写,提供简单易用的 Restful API,容易横向扩展,支持 PB 级的结构化与非结构化数据处理。Elastic...

    Elasticsearch学习笔记.docx

    本篇笔记将深入探讨Elasticsearch中的核心概念以及基本操作。 首先,Elasticsearch 中的 **索引(index)** 类似于传统关系型数据库的“数据库”,它是一个逻辑空间,用于存储具有相同结构的文档。例如,你可以创建一...

    Elasticsearch5学习笔记和Java对es进行增删改查示例

    本笔记将围绕Elasticsearch 5的核心概念和功能展开,特别是对于仍然使用或需要了解Elasticsearch 5的用户来说,这些内容非常实用。 1. **核心概念** - **索引(Index)**: 在Elasticsearch中,索引是一个存储文档...

    elasticsearch-analysis-dynamic-synonym-7.12.1.zip

    标题 "elasticsearch-analysis-dynamic-synonym-7.12.1.zip" 指的是一个针对Elasticsearch的自定义同义词分析插件,该插件版本为7.12.1。Elasticsearch是一款流行的开源搜索引擎,用于处理、存储、搜索和分析大量...

    Elasticsearch API

    另外,还可以参考一些封装好的代码库,这些库虽然不一定能直接使用,但能提供很好的参考价值,尤其是一些对API进行封装的示例代码,以及针对特定API的介绍和使用方法。 总的来说,Elasticsearch是一个功能强大、...

    ES学习笔记.docx

    本笔记主要记录了 Kibana 的常用操作,涵盖了增删改查操作,以及一些重要的 Elasticsearch 概念。以下是详细的知识点说明: ES 基本概念 * Elasticsearch 是一个基于 Lucene 库的搜索引擎,能够提供高效的搜索和...

    Elasticsearch 7基于springboot的应用

    **Elasticsearch 7 ...提供的 `elasticsearch.pdf` 文件可能包含了更深入的理论介绍和最佳实践,而 `maguo-es-jd` 和 `maguo-es-api` 文件可能包含具体的代码示例和 API 使用说明,对于初学者来说是很好的学习资源。

    千锋ElasticSearch6教程的资料

    - 索引生命周期管理(ILM):Elasticsearch 6 引入了ILM,用于自动管理索引的生命周期,包括热温冷数据分离、滚动索引和删除策略。 1.2 **字段数据类型** - 新增`keyword`类型:支持多值字段,适用于需要排序、...

    es学习笔记,覆盖全面,从入门到精通,原理画图分析

    根据文件提供的信息,我们可以了解到一系列关于Elasticsearch(简称ES)的知识点,包括其基本使用方法、结构化搜索、以及与关系型数据库的对比。以下是详细的知识点梳理: 1. Elasticsearch基本概念和数据结构 ...

    前端开发必备JavaScript(含源码课件笔记总结)

    掌握XMLHttpRequest对象的使用,以及Promise和async/await的使用,能让你编写出更优雅的异步代码。 五、ES6及后续版本新特性 ES6(ECMAScript 2015)引入了许多新特性,如箭头函数、模板字符串、解构赋值、let/...

    js笔记整理BOM和DOM,es5和es6

    DOM提供了操作页面内容的方法,例如document对象可以用来创建、查找、修改和删除节点。document.getElementById用于获取指定ID的元素,querySelector和querySelectorAll则用于根据CSS选择器获取元素。此外,DOM事件...

    Linux学习笔记整理

    - ES (Enterprise Server):适用于小型企业的服务器环境。 - WS (Workstation):适用于桌面和工作站环境。 文档中选择了CentOS作为安装目标,这是一个基于RHEL源代码构建的免费发行版,适合学习和测试用途。 #### ...

    马士兵课程笔记(续5)

    马士兵老师的课程笔记中,这部分内容着重讲解了如何在Java中处理文件和目录,包括遍历文件树、读写文件以及使用相关工具类。这里我们将详细探讨`ListFilesTree.java`和`ListFilesTree.javabak`这两个文件可能涉及的...

    JS学习笔记doc.rar

    JavaScript可以利用DOM API来操作页面元素,例如添加、删除、修改元素,以及获取元素属性和样式。 3. **事件处理**:JavaScript通过事件监听来响应用户行为,比如点击按钮、滚动页面等。常见的事件有click、...

    笔记2232 真的非常不错

    1. **Elasticsearch (ES) 写入操作**:在ES中,写入操作涉及到文档的索引过程。首先,数据被发送到一个分片,然后经过一系列步骤,如文档的路由、序列化、持久化等,最终存储到磁盘。 2. **HashMap的put操作**:...

Global site tag (gtag.js) - Google Analytics