刪除api允許從特定索引通過id刪除json文檔。有兩種方法,一是通過id刪除,二是通過一個Query查詢條件刪除,符合這些條件的數據都會被刪除。
一、通過id刪除
下面的例子是刪除索引名爲twitter,類型爲tweet,id爲1的文檔:
DeleteResponse response = client.prepareDelete("twitter", "tweet", "1")
.execute()
.actionGet();
二、通過Query刪除
下面的例子是刪除索引名爲productIndex,title中包含query的所有文檔:
QueryBuilder query = QueryBuilders.fieldQuery("title", "query");
client.prepareDeleteByQuery("productIndex").setQuery(query).execute().actionGet();
設置線程
當刪除api在同一個節點上執行時(在一個分片中執行一個api會分配到同一個服務器上),刪除api允許執行前設置線程模式(operationThreaded選項),operationThreaded這個選項是使這個操作在另外一個線程中執行,或在一個正在請求的線程(假設這個api仍是異步的)中執行。默認的話operationThreaded會設置成true,這意味着這個操作將在一個不同的線程中執行。下面是設置成false的方法:
DeleteResponse response = client.prepareDelete("twitter", "tweet", "1")
.setOperationThreaded(false)
.execute()
.actionGet();
官方文檔:
http://www.elasticsearch.org/guide/reference/api/delete.html
http://www.elasticsearch.org/guide/reference/java-api/delete.html