关闭

ElasticSearch Java Api(四) -删除索引

标签: elasticsearchjavaapi
20451人阅读 评论(9) 收藏 举报
分类:

删除可以是删除整个索引库,也可以根据文档id删除索引库下的文档,还可以通过query查询条件删除所有符合条件的数据。

一、删除整个索引库

下面的例子会删除indexName索引:

DeleteIndexResponse dResponse = client.admin().indices().prepareDelete(indexName)
                        .execute().actionGet();

可以根据DeleteIndexResponse对象的isAcknowledged()方法判断删除是否成功,返回值为boolean类型.
如果传人的indexName不存在会出现异常.可以先判断索引是否存在:

IndicesExistsRequest inExistsRequest = new IndicesExistsRequest(indexName);

IndicesExistsResponse inExistsResponse = client.admin().indices()
                    .exists(inExistsRequest).actionGet();

根据IndicesExistsResponse对象的isExists()方法的boolean返回值可以判断索引库是否存在.

二、通过ID删除

下面的例子是删除索引名为blog,类型为article,id为1的文档:

DeleteResponse dResponse = client.prepareDelete("blog", "article", "1").execute().actionGet();

通过DeleteResponse对象的isFound()方法,可以得到删除是否成功,返回值为boolean类型.

三、通过Query删除

elasticsearch-2.3 中和旧版本api不太一样,安装插件:

sudo bin/plugin install delete-by-query

集群有多个节点的情况下,每个节点都需要安装并重启.
如果想要移除插件,可以执行以下命令:

sudo bin/plugin remove delete-by-query

删除索引名为twitter,类型为tweet,user字段中含有kimchy的所有文档:

DELETE /twitter/tweet/_query?q=user:kimchy

java api参考Elasticsearch Java Api(六)–DeleteByQuery

四、java demo

package cn.com.bropen.es;

import static org.elasticsearch.index.query.QueryBuilders.termQuery;

import java.net.InetAddress;
import java.net.UnknownHostException;

import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.QueryBuilder;

public class ElasticSearchCreate {

    private static String ServerIP = "127.0.0.1";// ElasticSearch server ip
    private static int ServerPort = 9300;// port
    private Client client;

    public static void main(String[] args) {

        try {
            Client client = TransportClient.builder().build().addTransportAddress(
                    new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));

            DeleteResponse dResponse = client.prepareDelete("blog", "article", "11").execute()
                    .actionGet();

            if (dResponse.isFound()) {
                System.out.println("删除成功");
            } else {
                System.out.println("删除失败");
            }

            QueryBuilder qb1 = termQuery("title", "hibernate");


        } catch (UnknownHostException e) {
            e.printStackTrace();
        }

         deleteIndex("test");//删除名为test的索引库
    }

    // 删除索引库

    public static void deleteIndex(String indexName) {

        try {
            if (!isIndexExists(indexName)) {
                System.out.println(indexName + " not exists");
            } else {
                Client client = TransportClient.builder().build().addTransportAddress(
                        new InetSocketTransportAddress(InetAddress.getByName(ServerIP),
                                ServerPort));

                DeleteIndexResponse dResponse = client.admin().indices().prepareDelete(indexName)
                        .execute().actionGet();
                if (dResponse.isAcknowledged()) {
                    System.out.println("delete index "+indexName+"  successfully!");
                }else{
                    System.out.println("Fail to delete index "+indexName);
                }
            }
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }

    // 创建索引库
    public static void createIndex(String indexName) {
        try {
            Client client = TransportClient.builder().build().addTransportAddress(
                    new InetSocketTransportAddress(InetAddress.getByName(ServerIP), ServerPort));

            // 创建索引库

            if (isIndexExists("indexName")) {
                System.out.println("Index  " + indexName + " already exits!");
            } else {
                CreateIndexRequest cIndexRequest = new CreateIndexRequest("indexName");
                CreateIndexResponse cIndexResponse = client.admin().indices().create(cIndexRequest)
                        .actionGet();
                if (cIndexResponse.isAcknowledged()) {
                    System.out.println("create index successfully!");
                } else {
                    System.out.println("Fail to create index!");
                }

            }

        } catch (UnknownHostException e) {
            e.printStackTrace();
        }

    }

    // 判断索引是否存在 传入参数为索引库名称
    public static boolean isIndexExists(String indexName) {
        boolean flag = false;
        try {
            Client client = TransportClient.builder().build().addTransportAddress(
                    new InetSocketTransportAddress(InetAddress.getByName(ServerIP), ServerPort));

            IndicesExistsRequest inExistsRequest = new IndicesExistsRequest(indexName);

            IndicesExistsResponse inExistsResponse = client.admin().indices()
                    .exists(inExistsRequest).actionGet();

            if (inExistsResponse.isExists()) {
                flag = true;
            } else {
                flag = false;
            }

        } catch (UnknownHostException e) {
            e.printStackTrace();
        }

        return flag;
    }

}
3
1
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

分布式搜索elasticsearch 索引文档的增删改查 入门

1、RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口。 RESTful接口URL的格式: http://localhost:...
  • gdutliuyun827
  • gdutliuyun827
  • 2014-10-14 15:47
  • 38961

Elasticsearch增、删、改、查操作深入详解

引言:对于刚接触ES的童鞋,经常搞不明白ES的各个概念的含义。尤其对“索引”二字更是与关系型数据库混淆的不行。本文通过对比关系型数据库,将ES中常见的增、删、改、查操作进行图文呈现。能加深你对ES的理...
  • wojiushiwo987
  • wojiushiwo987
  • 2016-07-17 13:30
  • 40606

[Elasticsearch] 索引管理 (一)

索引管理 本文翻译自Elasticsearch官方指南的索引管理(Index Management)一章 我们已经了解了ES是如何在不需要任何复杂的计划和安装就能让我们很容易地开始开发一个新的应用...
  • dm_vincent
  • dm_vincent
  • 2014-11-24 10:04
  • 31272

Elasticsearch删除索引

curl -XDELETE 'http://host.IP.address:9200/logstash-*'如上是删除所有以logstash-开始的索引。 具体API可以看这里
  • felcon
  • felcon
  • 2016-06-30 21:28
  • 16732

Elasticsearch Java API之清空索引

package com.nerve.core.test; import java.io.IOException; import java.io.InputStream; import java.ne...
  • earbao
  • earbao
  • 2015-08-05 22:09
  • 6271

批量删除es索引

发现elasticsearch集群的状态是red,unassign的分片数很多,看了下都是些旧的日期的索引(应该是定时任务删除失败导致的)。 curl -XGET ip:port/_cat/shard...
  • u013673976
  • u013673976
  • 2016-11-30 17:57
  • 2552

清理elasticsearch的索引

直接到 elasticsearch data文件夹里删掉就行了,但怎么也得做的有点技术含量不是? 上网站看了看文档,其实也挺简单一条命令就行了 # curl -XDELETE 'http://172...
  • chengxuyuanyonghu
  • chengxuyuanyonghu
  • 2017-02-10 12:09
  • 1621

elasticsearch 学习博客系列<四> ES 中 index-doc 的 删除(java)

这一篇 我们讲解一下 Java 常用的 删除ES文档 doc 的方法,也是 分为 单个 删除 和 批量删除 删除的时候要进行定位,indexName + typeName + docId 进行 唯一...
  • qq_29631809
  • qq_29631809
  • 2017-06-01 23:53
  • 366

分布式搜索elasticsearch java API 之(四)------删除索引数据

删除api允许从特定索引通过id删除json文档。有两种方法,一是通过id删除,二是通过一个Query查询条件删除,符合这些条件的数据都会被删除。 一、通过id删除 下面的例子是删除索引名为twi...
  • laigood12345
  • laigood12345
  • 2012-04-14 14:50
  • 20266

elasticsearch5.5.1的javaapi,含创建索引、mapping、查询、增加删除文档

  • 2017-08-19 14:23
  • 7KB
  • 下载
    《从Lucene到Elasticsearch:全文检索实战》
    Lucene、ES、ELK开发交流群:370734940
    Lucene、ES、ELK开发交流
    个人资料
    • 访问:874915次
    • 积分:8871
    • 等级:
    • 排名:第2493名
    • 原创:206篇
    • 转载:2篇
    • 译文:6篇
    • 评论:463条
    StackOverFlow
    http://stackoverflow.com/users/6526424
    统计
    博客专栏
    文章分类
    最新评论