IndexDocumentsBatch.java
- // Copyright (c) Microsoft Corporation. All rights reserved.
- // Licensed under the MIT License.
- package com.azure.search.documents.indexes.models;
- import com.azure.core.annotation.Fluent;
- import com.azure.search.documents.SearchDocument;
- import com.azure.search.documents.models.IndexAction;
- import com.azure.search.documents.models.IndexActionType;
- import com.azure.search.documents.models.IndexBatchBase;
- import java.util.ArrayList;
- /**
- * Contains a batch of document write actions to send to the index.
- */
- @Fluent
- public class IndexDocumentsBatch<T> extends IndexBatchBase<T> {
- /**
- * Constructor of {@link IndexDocumentsBatch}.
- */
- public IndexDocumentsBatch() {
- super(new ArrayList<>());
- }
- /**
- * Adds document index actions to the batch.
- *
- * @param actions Index actions.
- * @return The updated IndexDocumentsBatch object.
- */
- public IndexDocumentsBatch<T> addActions(Iterable<IndexAction<T>> actions) {
- actions.forEach(action -> this.getActions().add(action));
- return this;
- }
- /**
- * Adds upload document actions to the batch.
- *
- * @param documents Documents to be uploaded.
- * @return The updated IndexDocumentsBatch object.
- */
- public IndexDocumentsBatch<T> addUploadActions(Iterable<T> documents) {
- addDocumentActions(documents, IndexActionType.UPLOAD);
- return this;
- }
- /**
- * Adds document delete actions to the batch.
- *
- * @param documents Document to be deleted.
- * @return The updated IndexDocumentsBatch object.
- */
- public IndexDocumentsBatch<T> addDeleteActions(Iterable<T> documents) {
- addDocumentActions(documents, IndexActionType.DELETE);
- return this;
- }
- /**
- * Adds document delete actions based on key IDs to the batch.
- *
- * @param keyName The key field name.
- * @param keyValues Keys of the documents to delete.
- * @return The updated IndexDocumentsBatch object.
- */
- @SuppressWarnings({"unchecked", "rawtypes"})
- public IndexDocumentsBatch<T> addDeleteActions(String keyName, Iterable<String> keyValues) {
- for (String val : keyValues) {
- SearchDocument doc = new SearchDocument();
- doc.put(keyName, val);
- IndexAction indexAction = new IndexAction()
- .setActionType(IndexActionType.DELETE)
- .setDocument(doc);
- this.getActions().add(indexAction);
- }
- return this;
- }
- /**
- * Adds merge document actions to the batch.
- *
- * @param documents Documents to be merged.
- * @return The updated IndexDocumentsBatch object.
- */
- public IndexDocumentsBatch<T> addMergeActions(Iterable<T> documents) {
- addDocumentActions(documents, IndexActionType.MERGE);
- return this;
- }
- /**
- * Adds merge or upload document actions to the batch.
- *
- * @param documents Documents to be merged or uploaded.
- * @return The updated IndexDocumentsBatch object.
- */
- public IndexDocumentsBatch<T> addMergeOrUploadActions(Iterable<T> documents) {
- addDocumentActions(documents, IndexActionType.MERGE_OR_UPLOAD);
- return this;
- }
- private void addDocumentActions(Iterable<T> documents, IndexActionType actionType) {
- documents.forEach(d -> this.getActions().add(new IndexAction<T>()
- .setActionType(actionType)
- .setDocument(d)));
- }
- }