Elasticsearch删除一个type下的所有数据
2017-03-07 14:42
423 查看
学习记录。
直接上执行语句:
DELETE /mytest/test/_query
{
"query": {
"match_all": {}
}
}
注:1、mytest为index,test为type
2、有朋友会问为什么执行了代码但是并没有删除?
原因是因为es在2.0 以上的不支持批量删除数据了,必须安装插件才能高效的批量删除。这个插件就是 delete-by-query
安装方法就是cmd到es的bin目录下运行这个代码 plugin install delete-by-query。网络好点应该是没问题的。
安装好之后重启es,然后再测试就可以了啦!同样java api 也就可以通过以下方法进行批量删除了
StringBuilder b = new StringBuilder();
b.append("{\"query\":{\"match_all\":{}}}");
DeleteByQueryRequestBuilder response = new DeleteByQueryRequestBuilder(client,DeleteByQueryAction.INSTANCE);
response.setIndices(index).setTypes(type).setSource(b.toString())
.execute()
.actionGet();
同样在maven项目的pom.xml文件中需添加:
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>delete-by-query</artifactId>
<version>2.4.1</version>
</dependency>
我用的2.4.1这个版本!
补充:
很不好意思,当时再写这个文章的时候漏掉了clent连接的代码。因为是写在另外一个类里面的就给搞忘记了。十分抱歉。
下面就是要使用批量删除的clent正确的连接方式:
Settings settings = Settings.settingsBuilder().put("cluster.name", "elasticsearch").build();
TransportClient client = TransportClient.builder()
.settings(settings)
.addPlugin(DeleteByQueryPlugin.class)
.build()
.addTransportAddress(new InetSocketTransportAddress(
InetAddress.getByName("localhost"), 9300));
设置的时候需要制定使用删除插件。
报错的朋友应该也就是这个问题了!!感谢朋友们的留言才让我看到问题所在,哈哈!!
直接上执行语句:
DELETE /mytest/test/_query
{
"query": {
"match_all": {}
}
}
注:1、mytest为index,test为type
2、有朋友会问为什么执行了代码但是并没有删除?
原因是因为es在2.0 以上的不支持批量删除数据了,必须安装插件才能高效的批量删除。这个插件就是 delete-by-query
安装方法就是cmd到es的bin目录下运行这个代码 plugin install delete-by-query。网络好点应该是没问题的。
安装好之后重启es,然后再测试就可以了啦!同样java api 也就可以通过以下方法进行批量删除了
StringBuilder b = new StringBuilder();
b.append("{\"query\":{\"match_all\":{}}}");
DeleteByQueryRequestBuilder response = new DeleteByQueryRequestBuilder(client,DeleteByQueryAction.INSTANCE);
response.setIndices(index).setTypes(type).setSource(b.toString())
.execute()
.actionGet();
同样在maven项目的pom.xml文件中需添加:
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>delete-by-query</artifactId>
<version>2.4.1</version>
</dependency>
我用的2.4.1这个版本!
补充:
很不好意思,当时再写这个文章的时候漏掉了clent连接的代码。因为是写在另外一个类里面的就给搞忘记了。十分抱歉。
下面就是要使用批量删除的clent正确的连接方式:
Settings settings = Settings.settingsBuilder().put("cluster.name", "elasticsearch").build();
TransportClient client = TransportClient.builder()
.settings(settings)
.addPlugin(DeleteByQueryPlugin.class)
.build()
.addTransportAddress(new InetSocketTransportAddress(
InetAddress.getByName("localhost"), 9300));
设置的时候需要制定使用删除插件。
报错的朋友应该也就是这个问题了!!感谢朋友们的留言才让我看到问题所在,哈哈!!
相关文章推荐
- 删除一个数据库中所有数据的方法
- ORACLE中如何用一条SQL语句删除一个表中所有某个列的值为空的数据?
- oracle如何删除一个用户下的所有数据?
- 删除一个数据库中所有数据的方法
- 删除一个表中所有含重复字段的数据
- oracle 删除某一个用户底下所有的表数据
- sql中删除冗余数据和一个叫department的表,里面只有一个字段name,一共有4条纪录,分别是a,b,c,d,对应四个球对,现在对列出所有组合等sql面试题
- Oracle 分页查询 查询一个表中从某行到某行的数据; 删除 删除一张表中所有重复的行(只留重复行中的一行); 删除一张表中指定重复的行(只留重复行中的一行);
- 批量删除mysql一个库所有数据表方法
- Elasticsearch的数据导出和导入操作(elasticdump工具),以及删除指定type的数据(delete-by-query插件)
- 这是一个定时脚本,主要功能是遍历该文件夹下的所有文件并存储到数组,对数据中的文件进行操作,一个一个移动到指定的目录下,并删除原有文件
- elasticsearch清空type下的所有数据
- es5.x批量删除某个Type下的所有数据
- 反转一个字符串和删除N层级目录的所有文件或者删除数据库所有表保留数据库;清除数据库所有表的数据
- sql中删除冗余数据和一个叫department的表,里面只有一个字段name,一共有4条纪录,分别是a,b,c,d,对应四个球对,现在对列出所有组合等sql面试题
- 将一个数据库中所有表的数据全部删除的命令
- JS删除一个数组中满足条件的所有数据
- 介绍一个免费的具备数据显示/录入/更新/删除功能的asp.net控件
- 下面的例子是删除一个文件夹下的所有文件及子文件夹,可以参考一下。
- SQL Server 清空或删除所有数据库表中的数据