Elasticsearch5.0 Java Api -- 删除索引
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch5.0 Java Api -- 删除索引相关的知识,希望对你有一定的参考价值。
测试删除索引的功能
1 package com.juyun.test; 2 3 import java.net.InetAddress; 4 import java.net.UnknownHostException; 5 6 import org.elasticsearch.action.admin.indices.create.CreateIndexRequest; 7 import org.elasticsearch.action.admin.indices.create.CreateIndexResponse; 8 import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse; 9 import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest; 10 import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse; 11 import org.elasticsearch.action.delete.DeleteResponse; 12 import org.elasticsearch.action.search.SearchResponse; 13 import org.elasticsearch.client.Client; 14 import org.elasticsearch.common.settings.Settings; 15 import org.elasticsearch.common.transport.InetSocketTransportAddress; 16 import org.elasticsearch.index.query.QueryBuilder; 17 import org.elasticsearch.index.query.QueryBuilders; 18 import org.elasticsearch.search.SearchHit; 19 import org.elasticsearch.search.SearchHits; 20 import org.elasticsearch.transport.client.PreBuiltTransportClient; 21 22 public class ElasticSearchDelete { 23 24 private static String ServerIP = "172.16.0.112"; // ES服务器IP 25 private static int ServerPort = 9300; // 端口号 26 private static Client client; 27 28 /** 29 * 测试删除索引功能 30 * @param args 31 * @throws UnknownHostException 32 */ 33 public static void main(String[] args) throws Exception { 34 35 try { 36 // 设置集群名称 37 Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build(); 38 // 创建client 39 client = new PreBuiltTransportClient(settings) 40 .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ServerIP), ServerPort)); 41 42 } catch (UnknownHostException e) { 43 e.printStackTrace(); 44 } 45 46 // deleteDocById("flow", "data", "AVvm2KHFAQ3YDg7NziSy"); // 删除指定文档 47 deleteIndex("flow"); // 删除名为test的索引库 48 // deleteByQuery("flow", "data"); 49 // createIndex("flow"); // 创建索引 50 51 52 client.close(); 53 } 54 55 // 根据索引名,类型和id删除文档 56 public static void deleteDocById(String indexName,String typeName,String id){ 57 58 DeleteResponse dResponse = client.prepareDelete(indexName, typeName, id).execute() 59 .actionGet(); 60 61 } 62 63 // 删除整个索引库 64 public static void deleteIndex(String indexName) throws UnknownHostException { 65 66 if (!isIndexExists(indexName)) { 67 System.out.println("输入的索引:"+indexName + "不存在!"); 68 } else { 69 DeleteIndexResponse dResponse = client.admin().indices().prepareDelete(indexName) 70 .execute().actionGet(); 71 if (dResponse.isAcknowledged()) { 72 System.out.println("delete index "+indexName+" successfully!"); 73 }else{ 74 System.out.println("Fail to delete index "+indexName); 75 } 76 } 77 } 78 79 // 删除一个类别下的所有doc 80 public static void deleteByQuery(String indexName,String typeName) throws Exception{ 81 82 long startTime=System.currentTimeMillis(); // 获取开始时间 83 QueryBuilder queryBuilder =QueryBuilders.matchAllQuery(); 84 SearchResponse searchResponse = client.prepareSearch(indexName).setTypes(typeName) 85 .setQuery(queryBuilder) 86 .setSize(10000) 87 .execute() 88 .actionGet(); 89 SearchHits hits = searchResponse.getHits(); // 获取搜索结果 90 Long resultNum = hits.getTotalHits(); // 查询到的总记录数 91 System.out.println("查询到记录数:" + resultNum); 92 SearchHit[] searchHists = hits.getHits(); 93 if(searchHists.length>0){ 94 for(SearchHit hit:searchHists){ 95 String id=hit.id(); 96 deleteDocById(indexName, typeName, id); 97 System.out.println("已删除id为:{"+id+"}的文档"); 98 } 99 } 100 if(resultNum>10000){ 101 Thread.sleep(2000); 102 deleteByQuery(indexName,typeName); // 递归调用 103 }else{ 104 long endTime=System.currentTimeMillis(); //获取结束时间 105 long duration = endTime-startTime; 106 System.out.println(indexName+"索引下"+typeName+"类别下的文档已全部删除,删除过程共耗时"+duration+"ms"); 107 } 108 109 } 110 111 112 113 // 创建索引库 114 public static void createIndex(String indexName) { 115 116 if (isIndexExists("indexName")) { 117 System.out.println("Index " + indexName + " already exits!"); 118 } else { 119 CreateIndexRequest cIndexRequest = new CreateIndexRequest("indexName"); 120 CreateIndexResponse cIndexResponse = client.admin().indices().create(cIndexRequest) 121 .actionGet(); 122 if (cIndexResponse.isAcknowledged()) { 123 System.out.println("create index successfully!"); 124 } else { 125 System.out.println("Fail to create index!"); 126 } 127 128 } 129 130 } 131 132 // 判断索引是否存在,传入参数为索引库名称 133 public static boolean isIndexExists(String indexName) { 134 boolean flag = false; 135 IndicesExistsRequest inExistsRequest = new IndicesExistsRequest(indexName); 136 137 IndicesExistsResponse inExistsResponse = client.admin().indices() 138 .exists(inExistsRequest).actionGet(); 139 140 if (inExistsResponse.isExists()) { 141 flag = true; 142 } else { 143 flag = false; 144 } 145 return flag; 146 } 147 }
以上是关于Elasticsearch5.0 Java Api -- 删除索引的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch5.0 Java Api -- 聚合查询
Elasticsearch5.0 Java Api -- 检索索引
Elasticsearch5.0 Java Api -- 更新索引
Elasticsearch5.0 Java Api -- 常用DSL查询