Class EsqlPlugin
- All Implemented Interfaces:
Closeable,AutoCloseable,ActionPlugin,ExtensiblePlugin,SearchPlugin
-
Nested Class Summary
Nested classes/interfaces inherited from class org.elasticsearch.plugins.Plugin
Plugin.PluginServicesNested classes/interfaces inherited from interface org.elasticsearch.plugins.ActionPlugin
ActionPlugin.ActionHandler, ActionPlugin.RestHandlersServicesNested classes/interfaces inherited from interface org.elasticsearch.plugins.ExtensiblePlugin
ExtensiblePlugin.ExtensionLoaderNested classes/interfaces inherited from interface org.elasticsearch.plugins.SearchPlugin
SearchPlugin.AggregationSpec, SearchPlugin.FetchPhaseConstructionContext, SearchPlugin.GenericNamedWriteableSpec, SearchPlugin.PipelineAggregationSpec, SearchPlugin.QuerySpec<T extends QueryBuilder>, SearchPlugin.QueryVectorBuilderSpec<T extends QueryVectorBuilder>, SearchPlugin.RescorerSpec<T extends RescorerBuilder<T>>, SearchPlugin.RetrieverSpec<RB extends RetrieverBuilder>, SearchPlugin.ScoreFunctionSpec<T extends ScoreFunctionBuilder<T>>, SearchPlugin.SearchExtensionSpec<W extends NamedWriteable,P>, SearchPlugin.SearchExtSpec<T extends SearchExtBuilder>, SearchPlugin.SignificanceHeuristicSpec<T extends SignificanceHeuristic>, SearchPlugin.SuggesterSpec<T extends SuggestionBuilder<T>> -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final StringName of the dedicated scaling pool for blocking external blob-store I/O and the streaming parse pipeline.Kill switch for theflatteneddata type in ES|QL.Maximum time (in milliseconds) that a GROK matcher is allowed to run before being interrupted.Controls whether LOOKUP JOIN uses the streaming lookup operator, which streams pages to the lookup node instead of performing a request per input page.Tuning parameter for deciding when to use the "merge" stored field loader. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected BlockFactoryProviderblockFactoryProvider(BlockFactoryBuilder builder) voidclose()static StringName of the thread pool backing ES|QL compute — driver execution and the parallel worker fan-out.Collection<?> createComponents(Plugin.PluginServices services) static StringName of the dedicated thread pool backing all external blob-store access: metadata discovery (glob expansion, footer reads, and schema reconciliation performed byExternalSourceResolver) as well as the blocking data reads and the streaming parse pipeline (segmentator + parser tasks ofStreamingParallelParsingCoordinator) routed throughOperatorFactoryRegistry#fileReadExecutor.List<ExecutorBuilder<?>> getExecutorBuilders(Settings settings) protected XPackLicenseStategetRestHandlers(ActionPlugin.RestHandlersServices restHandlersServices, Supplier<DiscoveryNodes> nodesInCluster, Predicate<NodeFeature> clusterSupportsFeature) The settings defined by the ESQL plugin.voidMethods inherited from class org.elasticsearch.plugins.Plugin
additionalSettings, getAdditionalIndexSettingProviders, getBootstrapChecks, getIndexTemplateMetadataUpgrader, getProjectCustomMetadataUpgraders, getSettingsFilter, onIndexModuleMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.elasticsearch.plugins.ActionPlugin
getActionFilters, getMappedActionFilters, getRestHeaders, getTaskHeaders, indicesAliasesRequestValidators, mappingRequestValidatorsMethods inherited from interface org.elasticsearch.plugins.SearchPlugin
getAggregationExtentions, getAggregations, getFetchSubPhases, getHighlighters, getPipelineAggregations, getQueries, getQueryVectorBuilders, getRequestCacheKeyDifferentiator, getRescorers, getRetrievers, getScoreFunctions, getSearchExts, getSignificanceHeuristics, getSuggesters
-
Field Details
-
ESQL_WORKER_THREAD_POOL_NAME
- See Also:
-
EXTERNAL_IO_THREAD_POOL_NAME
Name of the dedicated scaling pool for blocking external blob-store I/O and the streaming parse pipeline. Sized0..ExternalSourceSettings.externalIoThreads(Settings)— tracking the same single CPU-scaled knob (snapshot_metashape, capped at 100, or theesql.external.max_concurrent_requestsoperator override) that sizes the permit semaphore and the S3/Azure SDK connection pools, so the pool cannot diverge from the concurrency the reads are permitted. Scales from 0 so idle nodes pay nothing. SeeexternalBlobStorePool()for why this is separate fromesql_worker.- See Also:
-
ESQL_WORKER_THREAD_POOL_SIZE
-
QUERY_ALLOW_PARTIAL_RESULTS
-
LOOKUP_JOIN_STREAMING
Controls whether LOOKUP JOIN uses the streaming lookup operator, which streams pages to the lookup node instead of performing a request per input page. Acts as an escape hatch to fall back to the non-streaming operator; even when enabled, streaming is only used if all target nodes support the streaming protocol. -
FLATTENED_ENABLED
Kill switch for theflatteneddata type in ES|QL. Whenfalse,flattenedfields resolve asunsupportedduring index resolution (the exact pre-flattened-support behavior:FROMstill works and the column is returned asunsupported, but any explicit use errors). Becausefield_extractonly operates onflattenedfields, disabling the type also disables that function transitively. -
ESQL_QUERYLOG_THRESHOLD_WARN_SETTING
-
ESQL_QUERYLOG_THRESHOLD_INFO_SETTING
-
ESQL_QUERYLOG_THRESHOLD_DEBUG_SETTING
-
ESQL_QUERYLOG_THRESHOLD_TRACE_SETTING
-
ESQL_QUERYLOG_INCLUDE_USER_SETTING
-
GROK_WATCHDOG_MAX_EXECUTION_TIME
Maximum time (in milliseconds) that a GROK matcher is allowed to run before being interrupted. Limits how long a GROK matcher can run to protect against expensive regex patterns. Read directly from each node's ownClusterSettingswherever the matcher is built for execution (seeLocalExecutionPlanner#planGrok) rather than being carried in the ES|QLConfigurationwire format, since every node can resolve this node-scoped setting on its own — including live updates, since it is also dynamic. -
STORED_FIELDS_SEQUENTIAL_PROPORTION
Tuning parameter for deciding when to use the "merge" stored field loader. Think of it as "how similar to a sequential block of documents do I have to be before I'll use the merge reader?" So a value of1means I have to be exactly a sequential block, like0, 1, 2, 3, .. 1299, 1300. A value of.2means we'll use the sequential reader even if we only need one in ten documents.The default value of this was experimentally derived using a script. And a little paranoia. A lower default value was looking good locally, but I'm concerned about the implications of effectively using this all the time.
-
-
Constructor Details
-
EsqlPlugin
public EsqlPlugin()
-
-
Method Details
-
externalBlobStorePool
Name of the dedicated thread pool backing all external blob-store access: metadata discovery (glob expansion, footer reads, and schema reconciliation performed byExternalSourceResolver) as well as the blocking data reads and the streaming parse pipeline (segmentator + parser tasks ofStreamingParallelParsingCoordinator) routed throughOperatorFactoryRegistry#fileReadExecutor.This is a separate pool from
computePool()on purpose. These tasks block their thread on network I/O (a sequential decompressed stream read pulls compressed bytes from the object store) and on the parser's bounded hand-off queues; the computeDriverthat consumes the parsed pages runs oncomputePool(). If the two shared a fixed pool, the segmentator plusparsing_parallelismparser tasks would occupy every slot and starve their own consumer, deadlocking the query (observed as a stalled heap-attack external query). Keeping them apart also prevents a single heavy external query from starving compute. In-flight cloud API calls are still bounded by the per-scheme permit semaphore inStorageProviderRegistry; the permits and this pool solve different problems — concurrency fairness/back-pressure versus thread isolation.Must never resolve to
ThreadPool.Names.SEARCHorThreadPool.Names.GENERIC: a single heavy external query would otherwise starve regular searches or the rest of the node. -
computePool
Name of the thread pool backing ES|QL compute — driver execution and the parallel worker fan-out. Returns theesql_workerpool. Distinct fromexternalBlobStorePool()so the blocking external I/O and parse pipeline cannot starve the compute drivers that consume its output (and vice versa). -
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classPlugin- Throws:
IOException
-
createComponents
- Overrides:
createComponentsin classPlugin
-
blockFactoryProvider
-
getLicenseState
-
getSettings
The settings defined by the ESQL plugin.- Overrides:
getSettingsin classPlugin- Returns:
- the settings
-
getActions
- Specified by:
getActionsin interfaceActionPlugin
-
getRestHandlers
public List<RestHandler> getRestHandlers(ActionPlugin.RestHandlersServices restHandlersServices, Supplier<DiscoveryNodes> nodesInCluster, Predicate<NodeFeature> clusterSupportsFeature) - Specified by:
getRestHandlersin interfaceActionPlugin
-
getNamedWriteables
- Overrides:
getNamedWriteablesin classPlugin
-
getNamedXContent
- Overrides:
getNamedXContentin classPlugin
-
getExecutorBuilders
- Overrides:
getExecutorBuildersin classPlugin
-
loadExtensions
- Specified by:
loadExtensionsin interfaceExtensiblePlugin
-
getGenericNamedWriteables
- Specified by:
getGenericNamedWriteablesin interfaceSearchPlugin
-