All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hibernate.search.elasticsearch.client.impl.BulkRequest Maven / Gradle / Ivy

There is a newer version: 5.11.12.Final
Show newest version
/*
 * Hibernate Search, full-text search for your domain model
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later
 * See the lgpl.txt file in the root directory or .
 */
package org.hibernate.search.elasticsearch.client.impl;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;

import org.hibernate.search.backend.LuceneWork;
import org.hibernate.search.exception.ErrorHandler;
import org.hibernate.search.exception.impl.ErrorContextBuilder;

/**
 * A request group backed by an actual bulk request.
 */
public class BulkRequest implements ExecutableRequest {

	private final JestClient jestClient;
	private final ErrorHandler errorHandler;
	private final List> requests;

	/**
	 * Whether to perform a refresh in the course of executing this bulk or not. Note that this will refresh all indexes
	 * touched by this bulk, not only those given via {@link #indexesNeedingRefresh}. That's acceptable.
	 * 

* If {@code true}, no explicit refresh of the concerned indexes is needed afterwards. */ private final boolean refresh; private final Set indexNames; /** * Names of those indexes to be refreshed after executing this bulk */ private final Set indexesNeedingRefresh; public BulkRequest(JestClient jestClient, ErrorHandler errorHandler, List> requests, Set indexNames, Set indexesNeedingRefresh, boolean refresh) { this.jestClient = jestClient; this.errorHandler = errorHandler; this.requests = requests; this.indexNames = indexNames; this.indexesNeedingRefresh = indexesNeedingRefresh; this.refresh = refresh; } @Override public void execute() { try { jestClient.executeBulkRequest( requests, refresh ); } catch (BulkRequestFailedException brfe) { ErrorContextBuilder builder = new ErrorContextBuilder(); List allWork = new ArrayList<>(); for ( BackendRequest backendRequest : requests ) { allWork.add( backendRequest.getLuceneWork() ); if ( !brfe.getErroneousItems().contains( backendRequest ) ) { builder.workCompleted( backendRequest.getLuceneWork() ); } } builder.allWorkToBeDone( allWork ); for ( BackendRequest failedAction : brfe.getErroneousItems() ) { builder.addWorkThatFailed( failedAction.getLuceneWork() ); } builder.errorThatOccurred( brfe ); errorHandler.handle( builder.createErrorContext() ); } catch (Exception e) { errorHandler.handleException( "Bulk request failed", e ); } } @Override public Set getTouchedIndexes() { return indexNames; } @Override public Set getIndexesNeedingRefresh() { if ( refresh ) { return Collections.emptySet(); } else { return indexesNeedingRefresh; } } @Override public int getSize() { return requests.size(); } @Override public String toString() { return "BulkRequest [size=" + requests.size() + ", refresh=" + refresh + ", indexNames=" + indexNames + ", indexesNeedingRefresh=" + indexesNeedingRefresh + "]"; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy