JAVA操作ES增刪API


PS:this.esClient為以配置完成且注入的對象,該隨筆只記錄相應API基本寫法。

 

根據ES自動生成的_id進行單一刪除:

DeleteResponse response =this.esClient.prepareDelete(INDEX_NAME, INDEX_TYPE, _id).execute().actionGet();

 

根據查詢結果刪除(filter內可以使用多種查詢):

DeleteByQueryRequestBuilder builder = DeleteByQueryAction.INSTANCE.newRequestBuilder(this.esClient)

                         .filter(QueryBuilders.matchQuery(字段名, 字段值)).source(INDEX_NAME);

BulkByScrollResponse response2 = builder.get();

long deleted = response2.getDeleted();        //獲得刪除的記錄條數

 

Bulk為批量操作,使用bulk可減少請求發送的次數,可提高大數量操作效率,但當bulk的條數過多時,會產生相反效果(比如占用大量內存,一次請求占用太多CPU時間...)。

一次bulk具體數量應多方面權衡,找到最佳平衡點。

BulkRequestBuilder bulkRequestBuilder = this.esClient.prepareBulk();

for (POJO pojo: resultList) {

  bulkRequestBuilder.add(this.esClient.prepareIndex(INDEX_NAME, INDEX_TYPE).setSource(JSON.toJSONString(pojo), XContentType.JSON));

}

BulkResponse response = bulkRequestBuilder.execute().actionGet();

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM