官方的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/

10-10 14:30