java Elasticsearch:如何根据匹配条件删除条目
如何根据搜索条件删除某些文档
我正在使用ElasticSearchJavaAPI
我想删除符合条件的文件。我该怎么做?我没有找到它
我认为的一个选项是使用匹配条件进行查询,然后获取每个条件的ID并删除它们
下面是我正在根据id删除的代码
BoolQueryBuilder queryBuilder = QueryBuilders
.boolQuery()
.must(QueryBuilders.termQuery("myid", "2"))
.minimumShouldMatch("100%")
.should(QueryBuilders.matchPhraseQuery("hnumber", "22"))
.minimumNumberShouldMatch(1);
SearchResponse actionGet = client.prepareSearch(<index>).setTypes(<type>)
.setQuery(queryBuilder)
.addSort("timestamp", SortOrder.DESC)
.setSearchType(SearchType.DEFAULT)
.setFrom(0)
.setSize(15)
.execute()
.actionGet();
对于每个结果,执行以下代码
Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress(strIPAddress, iPort));
try {
DeleteResponse response = client.prepareDelete(<index>, <type>, id)
.execute()
.actionGet();
return response.getId();
} catch(Throwable th){
} finally {
if(null != client) {
client.close();
}
}
我想知道我怎么做,而不是实际查询和删除匹配查询。我看到JavaAPI中有一个prepareDeleteByQuery方法,不知道如何使用它
你能帮我解决这个问题吗?感谢您的帮助
# 1 楼答案
必须创建DeleteByQueryRequestBuilder并执行
我已经设法为你创建了一个请求
希望这有帮助!!谢谢