Java IBM Watson:向集合添加文档时出现未知API错误

Java IBM Watson:向集合添加文档时出现未知API错误,java,watson-discovery,Java,Watson Discovery,我试图通过Java中的IBM Watson API将文档添加到我的IBM Bluemix发现实例集合中。对于给定的文件,我执行以下操作: Discovery discovery = new Discovery("2017-08-01"); discovery.setEndPoint("https://gateway.watsonplatform.net/discovery/api"); discovery.setUsernameAndPassword("{username}", "{passwo

我试图通过Java中的IBM Watson API将文档添加到我的IBM Bluemix发现实例集合中。对于给定的文件,我执行以下操作:

Discovery discovery = new Discovery("2017-08-01");
discovery.setEndPoint("https://gateway.watsonplatform.net/discovery/api");
discovery.setUsernameAndPassword("{username}", "{password}");
String environmentId = "{environment_id}";
String collectionId = "{collection_id}";

File f = new File("path/to/file");
String path = f.getPath();
String ext = FilenameUtils.getExtension(f.getName());

CreateDocumentRequest.Builder builder = new CreateDocumentRequest.Builder(environmentId, collectionId).documentId(path).file(f);
CreateDocumentResponse createResponse = discovery.createDocument(builder.build()).execute();
System.out.println(createResponse.toString());
但是,当我执行程序时,我在线程“main”com.ibm.watson.developer\u cloud.service.Exception.NotFoundException:Unknown API:POST[…]中得到了错误
异常,它来自初始化
createResponse
的行


谢谢。

您的文档ID错误

正确的文档ID类似于“49a82bd4-xxxx-xxxx-xxxx-900b7378ff35”,但您将路径作为参数

如果要添加文档,默认情况下不需要为documentId指定值

Discovery discovery = new Discovery("2017-08-01");
discovery.setEndPoint("https://gateway.watsonplatform.net/discovery/api");                             
discovery.setUsernameAndPassword("feeb4a95-xxxx-xxxx-xxxx-4d94c98b2b24", "KQc6G5nK6HrD");
String environmentId = "59d0fa32-xxxx-xxxx-xxxx-cf98a8cdc52e";
String collectionId = "49a82bd4-xxxx-xxxx-xxxx-900b7378ff35";
File f = new File("/Users/xxx/Desktop/myDoc.json");
Path path = Paths.get(f.getPath());
InputStream documentStream = new ByteArrayInputStream(Files.readAllBytes(path));

//Create
CreateDocumentRequest.Builder builder = new CreateDocumentRequest.Builder(environmentId, collectionId);
builder.inputStream(documentStream, HttpMediaType.APPLICATION_JSON);
CreateDocumentResponse createResponse = discovery.createDocument(builder.build()).execute();
//Retrieve  (You can get documentId here)
QueryRequest.Builder queryBuilder = new QueryRequest.Builder(environmentId, collectionId);
QueryResponse queryResponse = discovery.query(queryBuilder.build()).execute();
System.out.println(queryResponse.toString());
//Delete
String documentId = "d1059598-xxxx-xxxx-xxxx-b65a1f3334d8";
DeleteDocumentRequest deleteRequest = new DeleteDocumentRequest.Builder(environmentId, collectionId, documentId).build();
DeleteDocumentResponse deleteResponse = discovery.deleteDocument(deleteRequest).execute();

您的文档ID错误

正确的文档ID类似于“49a82bd4-xxxx-xxxx-xxxx-900b7378ff35”,但您将路径作为参数

如果要添加文档,默认情况下不需要为documentId指定值

Discovery discovery = new Discovery("2017-08-01");
discovery.setEndPoint("https://gateway.watsonplatform.net/discovery/api");                             
discovery.setUsernameAndPassword("feeb4a95-xxxx-xxxx-xxxx-4d94c98b2b24", "KQc6G5nK6HrD");
String environmentId = "59d0fa32-xxxx-xxxx-xxxx-cf98a8cdc52e";
String collectionId = "49a82bd4-xxxx-xxxx-xxxx-900b7378ff35";
File f = new File("/Users/xxx/Desktop/myDoc.json");
Path path = Paths.get(f.getPath());
InputStream documentStream = new ByteArrayInputStream(Files.readAllBytes(path));

//Create
CreateDocumentRequest.Builder builder = new CreateDocumentRequest.Builder(environmentId, collectionId);
builder.inputStream(documentStream, HttpMediaType.APPLICATION_JSON);
CreateDocumentResponse createResponse = discovery.createDocument(builder.build()).execute();
//Retrieve  (You can get documentId here)
QueryRequest.Builder queryBuilder = new QueryRequest.Builder(environmentId, collectionId);
QueryResponse queryResponse = discovery.query(queryBuilder.build()).execute();
System.out.println(queryResponse.toString());
//Delete
String documentId = "d1059598-xxxx-xxxx-xxxx-b65a1f3334d8";
DeleteDocumentRequest deleteRequest = new DeleteDocumentRequest.Builder(environmentId, collectionId, documentId).build();
DeleteDocumentResponse deleteResponse = discovery.deleteDocument(deleteRequest).execute();

非常感谢。它解决了这个问题。不过,现在我还有另一个问题。如果我想搜索给定路径的特定文档,我该怎么做?我需要文档Id,后者似乎在
CreateDocumentRequest
的响应中只给出了一次。我是否必须将这些映射到相应路径的ID保存在文件中?同样的问题也适用于删除文档。谢谢。它解决了这个问题。不过,现在我还有另一个问题。如果我想搜索给定路径的特定文档,我该怎么做?我需要文档Id,后者似乎在
CreateDocumentRequest
的响应中只给出了一次。我是否必须将这些映射到相应路径的ID保存在文件中?同样的问题也适用于删除文档。