Using Java to Operate MarkLogic
The use of MarkLogic in Java can be achieved through the MarkLogic Java API. The following are the steps and sample code for using Java to operate MarkLogic:
1. Add Maven dependency
In the pom.xml file of the project, add the following Maven dependencies to introduce the MarkLogic Java API:
<dependency>
<groupId>com.marklogic</groupId>
<artifactId>java-client-api</artifactId>
<version>4.3.0</version>
</dependency>
2. Create a MarkLogic connection
Create a MarkLogicConnector object using MarkLogicClientFactory to connect to the MarkLogic database:
import com.marklogic.client.DatabaseClient;
import com.marklogic.client.DatabaseClientFactory;
import com.marklogic.client.DatabaseClientFactory.Authentication;
import com.marklogic.client.DatabaseClientFactory.DigestAuthContext;
//Establishing a connection
final String host = "localhost";
final int port = 8000;
final String username = "admin";
final String password = "admin";
final String database = "Documents";
DatabaseClient client = DatabaseClientFactory.newClient(host, port, database,
new DigestAuthContext(username, password));
3. Data insertion
Create a document using DocumentManager and insert it into the MarkLogic database:
import com.marklogic.client.document.DocumentManager;
import com.marklogic.client.document.GenericDocument;
import com.marklogic.client.io.StringHandle;
//Insert Document
DocumentManager documentManager = client.newDocumentManager();
StringHandle content = new StringHandle("This is some example content");
GenericDocument document = documentManager.newDocument("/example/doc1", content);
documentManager.write(document);
4. Data Query
Use QueryBuilder to build queries and use SearchManager to execute queries:
import com.marklogic.client.query.MatchDocumentSummary;
import com.marklogic.client.query.MatchLocation;
import com.marklogic.client.query.QueryManager;
import com.marklogic.client.query.StringQueryDefinition;
//Query data
QueryManager queryManager = client.newQueryManager();
StringQueryDefinition queryDef = queryManager.newStringDefinition();
queryDef.setCriteria("example");
MatchDocumentSummary[] results = queryManager.search(queryDef, 10);
for (MatchDocumentSummary result : results) {
System.out.println("URI: " + result.getUri());
for (MatchLocation match : result.getMatchLocations()) {
System.out.println("Match: " + match.getAllSnippetText());
}
}
5. Data modification
To modify document content using DocumentManager:
import com.marklogic.client.document.DocumentPatchBuilder;
import com.marklogic.client.document.DocumentPatchHandle;
//Modifying Documents
String documentUri = "/example/doc1";
DocumentPatchHandle patchHandle = new DocumentPatchHandle();
DocumentPatchBuilder patchBuilder = documentManager.newPatchBuilder();
patchBuilder.insertFragment("/doc/content", DocumentPatchBuilder.Position.LAST_CHILD, "<tag>This is a new tag</tag>");
patchHandle = patchBuilder.build();
documentManager.patch(documentUri, patchHandle);
6. Data deletion
To delete a document using DocumentManager:
import com.marklogic.client.document.DocumentUriTemplate;
import com.marklogic.client.document.DocumentWriteSet;
import com.marklogic.client.document.DocumentWriteOperation;
import com.marklogic.client.document.DocumentWriteOperation.OperationType;
//Delete Document
DocumentUriTemplate uriTemplate = documentManager.newDocumentUriTemplate("xml");
String uri = uriTemplate.insertDefaultExtension("/example/doc1");
DocumentWriteSet writeSet = documentManager.newWriteSet();
DocumentWriteOperation deleteOperation = documentManager.newDelete(uri);
writeSet.add(deleteOperation);
documentManager.write(writeSet);
The above are the basic steps and sample code for using Java to operate a MarkLogic database. As needed, more complex operations can be performed using the MarkLogic Java API based on specific business logic and requirements.