Sfoglia il codice sorgente

新增ES批量删除方法

woody 4 mesi fa
parent
commit
6f25a18efd

+ 14 - 0
framework-elasticsearch/src/main/java/com/chelvc/framework/elasticsearch/DefaultElasticsearchHandler.java

@@ -18,6 +18,8 @@ import co.elastic.clients.elasticsearch.core.CountRequest;
 import co.elastic.clients.elasticsearch.core.CountResponse;
 import co.elastic.clients.elasticsearch.core.CreateRequest;
 import co.elastic.clients.elasticsearch.core.CreateResponse;
+import co.elastic.clients.elasticsearch.core.DeleteByQueryRequest;
+import co.elastic.clients.elasticsearch.core.DeleteByQueryResponse;
 import co.elastic.clients.elasticsearch.core.DeleteRequest;
 import co.elastic.clients.elasticsearch.core.DeleteResponse;
 import co.elastic.clients.elasticsearch.core.ExistsRequest;
@@ -126,6 +128,18 @@ public class DefaultElasticsearchHandler implements ElasticsearchHandler {
         }
     }
 
+    @Override
+    public DeleteByQueryResponse delete(@NonNull Class<?> model, @NonNull Query query) {
+        ModelContext context = ModelContext.of(model);
+        DeleteByQueryRequest request = new DeleteByQueryRequest.Builder().index(context.getIndex()).query(query)
+                .conflicts(Conflicts.Proceed).build();
+        try {
+            return this.client.deleteByQuery(request);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
     @Override
     public <T> UpdateResponse<T> update(@NonNull T document) {
         return this.update(document, null, null);

+ 10 - 0
framework-elasticsearch/src/main/java/com/chelvc/framework/elasticsearch/ElasticsearchHandler.java

@@ -10,6 +10,7 @@ import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch.core.BulkResponse;
 import co.elastic.clients.elasticsearch.core.CountResponse;
 import co.elastic.clients.elasticsearch.core.CreateResponse;
+import co.elastic.clients.elasticsearch.core.DeleteByQueryResponse;
 import co.elastic.clients.elasticsearch.core.DeleteResponse;
 import co.elastic.clients.elasticsearch.core.GetResponse;
 import co.elastic.clients.elasticsearch.core.IndexResponse;
@@ -71,6 +72,15 @@ public interface ElasticsearchHandler {
      */
     BulkResponse delete(Class<?> model, Collection<String> ids);
 
+    /**
+     * 删除文档
+     *
+     * @param model 数据模型
+     * @param query 过滤条件
+     * @return 响应结果
+     */
+    DeleteByQueryResponse delete(Class<?> model, Query query);
+
     /**
      * 更新文档
      *