官方的Solr Java API具有deleteByQuery操作,我们可以在其中删除满足查询条件的文档。 AWS CloudSearch SDK似乎没有匹配功能。我只是没有看到等效的deleteByQuery,还是我们需要自己推出它?
像这样:
SearchRequest searchRequest = new SearchRequest();
searchRequest.setQuery(queryString);
searchRequest.setReturn("id,version");
SearchResult searchResult = awsCloudSearch.search(searchRequest);
JSONArray docs = new JSONArray();
for (Hit hit : searchResult.getHits().getHit()) {
JSONObject doc = new JSONObject();
doc.put("id", hit.getId());
// is version necessary?
doc.put("version", hit.getFields().get("version").get(0));
doc.put("type", "delete");
docs.put(doc);
}
UploadDocumentsRequest uploadDocumentsRequest = new UploadDocumentsRequest();
StringInputStream documents = new StringInputStream(docs.toString());
uploadDocumentsRequest.setDocuments(documents);
UploadDocumentsResult uploadResult = awsCloudSearch.uploadDocuments(uploadDocumentsRequest);
这合理吗?有更容易的方法吗?
最佳答案
您是正确的,CloudSearch没有与deleteByQuery等效的对象。您的方法似乎是下一个最好的方法。
否,无需version
-它已通过CloudSearch 01-01-2013 API(又称为v2)删除。
关于java - CloudSearch deleteByQuery,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32190138/