- All Implemented Interfaces:
ClusterStateApplier,ReportingService<IngestInfo>
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classUsed by this class andReservedPipelineActionstatic classSpecialized cluster state update task specifically for ingest pipeline operations.static classUsed in this class and externally by theReservedPipelineActionNested classes/interfaces inherited from interface org.elasticsearch.node.ReportingService
ReportingService.Info -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionIngestService(ClusterService clusterService, ThreadPool threadPool, Environment env, ScriptService scriptService, AnalysisRegistry analysisRegistry, List<IngestPlugin> ingestPlugins, Client client, MatcherWatchdog matcherWatchdog, Supplier<DocumentParsingObserver> documentParsingObserverSupplier) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddIngestClusterStateListener(Consumer<ClusterState> listener) Adds a listener that gets invoked with the current cluster state before processor factories get invoked.voidCalled when a new cluster state (ClusterChangedEvent.state()needs to be applied.static MatcherWatchdogcreateGrokThreadWatchdog(Environment env, ThreadPool threadPool) voiddelete(DeletePipelineRequest request, ActionListener<AcknowledgedResponse> listener) Deletes the pipeline specified by id in the request.voidexecuteBulkRequest(int numberOfActionRequests, Iterable<DocWriteRequest<?>> actionRequests, IntConsumer onDropped, BiConsumer<Integer, Exception> onFailure, BiConsumer<Thread, Exception> onCompletion, String executorName) getPipeline(String id) Returns the pipeline by the specified idstatic List<PipelineConfiguration>getPipelines(ClusterState clusterState, String... ids) <P extends Processor>
Collection<String>getPipelineWithProcessorType(Class<P> clazz, Predicate<P> predicate) getProcessorsInPipeline(String pipelineId, Class<P> clazz) Gets all the Processors of the given type from within a Pipeline.static booleanhasPipeline(IndexRequest indexRequest) Checks whether an IndexRequest has at least one pipeline defined.info()static booleanisNoOpPipelineUpdate(ClusterState state, PutPipelineRequest request) voidputPipeline(PutPipelineRequest request, ActionListener<AcknowledgedResponse> listener, Consumer<ActionListener<NodesInfoResponse>> nodeInfoListener) Stores the specified pipeline definition in the request.voidreloadPipeline(String id) static voidresolvePipelinesAndUpdateIndexRequest(DocWriteRequest<?> originalRequest, IndexRequest indexRequest, Metadata metadata) Resolves the potential pipelines (default and final) from the requests or templates associated to the index and then **mutates** theIndexRequestpassed object with the pipeline information.stats()voidvalidatePipelineRequest(PutPipelineRequest request, NodesInfoResponse nodeInfos)
-
Field Details
-
NOOP_PIPELINE_NAME
- See Also:
-
INGEST_ORIGIN
- See Also:
-
-
Constructor Details
-
IngestService
public IngestService(ClusterService clusterService, ThreadPool threadPool, Environment env, ScriptService scriptService, AnalysisRegistry analysisRegistry, List<IngestPlugin> ingestPlugins, Client client, MatcherWatchdog matcherWatchdog, Supplier<DocumentParsingObserver> documentParsingObserverSupplier)
-
-
Method Details
-
createGrokThreadWatchdog
-
resolvePipelinesAndUpdateIndexRequest
public static void resolvePipelinesAndUpdateIndexRequest(DocWriteRequest<?> originalRequest, IndexRequest indexRequest, Metadata metadata) Resolves the potential pipelines (default and final) from the requests or templates associated to the index and then **mutates** theIndexRequestpassed object with the pipeline information.Also, this method marks the request as `isPipelinesResolved = true`: Due to the request could be rerouted from a coordinating node to an ingest node, we have to be able to avoid double resolving the pipelines and also able to distinguish that either the pipeline comes as part of the request or resolved from this method. All this is made to later be able to reject the request in case the pipeline was set by a required pipeline **and** the request also has a pipeline request too.
- Parameters:
originalRequest- Original write request received.indexRequest- TheIndexRequestobject to update.metadata- Cluster metadata from where the pipeline information could be derived.
-
getClusterService
-
getScriptService
-
delete
Deletes the pipeline specified by id in the request. -
getPipelines
- Returns:
- pipeline configuration specified by id. If multiple ids or wildcards are specified multiple pipelines may be returned
-
putPipeline
public void putPipeline(PutPipelineRequest request, ActionListener<AcknowledgedResponse> listener, Consumer<ActionListener<NodesInfoResponse>> nodeInfoListener) throws Exception Stores the specified pipeline definition in the request.- Throws:
Exception
-
validatePipelineRequest
public void validatePipelineRequest(PutPipelineRequest request, NodesInfoResponse nodeInfos) throws Exception - Throws:
Exception
-
isNoOpPipelineUpdate
-
getPipeline
Returns the pipeline by the specified id -
getProcessorFactories
-
info
- Specified by:
infoin interfaceReportingService<IngestInfo>
-
executeBulkRequest
public void executeBulkRequest(int numberOfActionRequests, Iterable<DocWriteRequest<?>> actionRequests, IntConsumer onDropped, BiConsumer<Integer, Exception> onFailure, BiConsumer<Thread, Exception> onCompletion, String executorName) -
stats
-
addIngestClusterStateListener
Adds a listener that gets invoked with the current cluster state before processor factories get invoked.This is useful for components that are used by ingest processors, so that they have the opportunity to update before these components get used by the ingest processor factory.
-
applyClusterState
Description copied from interface:ClusterStateApplierCalled when a new cluster state (ClusterChangedEvent.state()needs to be applied. The cluster state to be applied is already committed when this method is called, so an applier must therefore be prepared to deal with any state it receives without throwing an exception. Throwing an exception from an applier is very bad because it will stop the application of this state before it has reached all the other appliers, and will likely result in another attempt to apply the same (or very similar) cluster state which might continue until this node is removed from the cluster.Cluster states are applied one-by-one which means they can be a performance bottleneck. Implementations of this method should therefore be fast, so please consider forking work into the background rather than doing everything inline.
- Specified by:
applyClusterStatein interfaceClusterStateApplier
-
getProcessorsInPipeline
Gets all the Processors of the given type from within a Pipeline.- Parameters:
pipelineId- the pipeline to inspectclazz- the Processor class to look for- Returns:
- True if the pipeline contains an instance of the Processor class passed in
-
getPipelineWithProcessorType
public <P extends Processor> Collection<String> getPipelineWithProcessorType(Class<P> clazz, Predicate<P> predicate) -
reloadPipeline
- Throws:
Exception
-
hasPipeline
Checks whether an IndexRequest has at least one pipeline defined.This method assumes that the pipelines are beforehand resolved.
-