Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Skip global ordinals loading if query does not match after rewrite #102844

Conversation

martijnvg
Copy link
Member

@martijnvg martijnvg commented Dec 1, 2023

This avoids these stacktraces in case the main query has been rewritten to MatchNoneQueryBuilder:

org.apache.lucene.util.packed.PackedInts.getMutable(PackedInts.java)
org.apache.lucene.util.packed.PackedInts.getMutable(PackedInts.java:706)
org.apache.lucene.util.packed.PackedLongValues$Builder.pack(PackedLongValues.java:283)
org.apache.lucene.util.packed.PackedLongValues$Builder.pack(PackedLongValues.java:260)
org.apache.lucene.util.packed.PackedLongValues$Builder.add(PackedLongValues.java:243)
org.apache.lucene.index.OrdinalMap.<init>(OrdinalMap.java:295)
org.apache.lucene.index.OrdinalMap.build(OrdinalMap.java:182)
org.apache.lucene.index.OrdinalMap.build(OrdinalMap.java:160)
org.elasticsearch.index.fielddata.ordinals.GlobalOrdinalsBuilder.build(GlobalOrdinalsBuilder.java:53)
org.elasticsearch.index.fielddata.plain.AbstractIndexOrdinalsFieldData.loadGlobalDirect(AbstractIndexOrdinalsFieldData.java:139)
org.elasticsearch.index.fielddata.plain.AbstractIndexOrdinalsFieldData.loadGlobalDirect(AbstractIndexOrdinalsFieldData.java:32)
org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache$IndexFieldCache.lambda$load$1(IndicesFieldDataCache.java:164)
org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache$IndexFieldCache$$Lambda+0x000000f002931690.load()
org.elasticsearch.common.cache.Cache.computeIfAbsent(Cache.java:418)
org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache$IndexFieldCache.load(IndicesFieldDataCache.java:161)
org.elasticsearch.index.fielddata.plain.AbstractIndexOrdinalsFieldData.loadGlobalInternal(AbstractIndexOrdinalsFieldData.java:127)
org.elasticsearch.index.fielddata.plain.AbstractIndexOrdinalsFieldData.loadGlobal(AbstractIndexOrdinalsFieldData.java:93)
org.elasticsearch.search.aggregations.support.ValuesSource$Bytes$WithOrdinals$FieldData.globalOrdinalsValues(ValuesSource.java:283)
org.elasticsearch.search.aggregations.bucket.terms.TermsAggregatorFactory.globalOrdsValues(TermsAggregatorFactory.java:590)
org.elasticsearch.search.aggregations.bucket.terms.SignificantTermsAggregatorFactory$ExecutionMode$2.create(SignificantTermsAggregatorFactory.java:368)
org.elasticsearch.search.aggregations.bucket.terms.SignificantTermsAggregatorFactory.lambda$bytesSupplier$0(SignificantTermsAggregatorFactory.java:101)
org.elasticsearch.search.aggregations.bucket.terms.SignificantTermsAggregatorFactory$$Lambda+0x000000f001a7e878.build()
org.elasticsearch.search.aggregations.bucket.terms.SignificantTermsAggregatorFactory.doCreateInternal(SignificantTermsAggregatorFactory.java:279)
org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory.createInternal(ValuesSourceAggregatorFactory.java:41)
org.elasticsearch.search.aggregations.AggregatorFactory.create(AggregatorFactory.java:80)
org.elasticsearch.search.aggregations.AggregatorFactories.createSubAggregators(AggregatorFactories.java:233)
org.elasticsearch.search.aggregations.AggregatorFactories.createTopLevelAggregators(AggregatorFactories.java:243)
org.elasticsearch.search.aggregations.AggregationPhase.newAggregatorCollector(AggregationPhase.java:51)
org.elasticsearch.search.aggregations.AggregationPhase.lambda$preProcess$1(AggregationPhase.java:37)
org.elasticsearch.search.aggregations.AggregationPhase$$Lambda+0x000000f00292eeb0.get()
org.elasticsearch.search.aggregations.AggregatorCollectorManager.newCollector(AggregatorCollectorManager.java:39)
org.elasticsearch.search.aggregations.AggregatorCollectorManager.newCollector(AggregatorCollectorManager.java:21)
org.elasticsearch.search.query.QueryPhaseCollectorManager.newCollector(QueryPhaseCollectorManager.java:139)
org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:311)
org.elasticsearch.search.query.QueryPhase.addCollectorsAndSearch(QueryPhase.java:205)
org.elasticsearch.search.query.QueryPhase.executeQuery(QueryPhase.java:135)
org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:63)
org.elasticsearch.indices.IndicesService.lambda$loadIntoContext$31(IndicesService.java:1563)
org.elasticsearch.indices.IndicesService$$Lambda+0x000000f0028f8ac8.accept()
org.elasticsearch.indices.IndicesService.lambda$cacheShardLevelResult$32(IndicesService.java:1629)
org.elasticsearch.indices.IndicesService$$Lambda+0x000000f0028f9210.get()
org.elasticsearch.indices.IndicesRequestCache$Loader.load(IndicesRequestCache.java:174)
org.elasticsearch.indices.IndicesRequestCache$Loader.load(IndicesRequestCache.java:157)
org.elasticsearch.common.cache.Cache.computeIfAbsent(Cache.java:418)
org.elasticsearch.indices.IndicesRequestCache.getOrCompute(IndicesRequestCache.java:120)
org.elasticsearch.indices.IndicesService.cacheShardLevelResult(IndicesService.java:1635)
org.elasticsearch.indices.IndicesService.loadIntoContext(IndicesService.java:1557)
org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:516)
org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:671)
org.elasticsearch.search.SearchService.lambda$executeQueryPhase$2(SearchService.java:543)
org.elasticsearch.search.SearchService$$Lambda+0x000000f0028f6410.get()
org.elasticsearch.action.ActionRunnable$2.accept(ActionRunnable.java:51)
org.elasticsearch.action.ActionRunnable$2.accept(ActionRunnable.java:48)
org.elasticsearch.action.ActionRunnable$3.doRun(ActionRunnable.java:73)
org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26)
org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:33)
org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:983)
org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
java.lang.Thread.runWith(Thread.java:1596)
java.lang.Thread.run(Thread.java:1583)

@martijnvg martijnvg added the :Search/Search Search-related issues that do not fall into other categories label Dec 1, 2023
@martijnvg martijnvg added >bug :Analytics/Aggregations Aggregations and removed :Search/Search Search-related issues that do not fall into other categories labels Dec 1, 2023
@martijnvg martijnvg changed the title Improve skipping searching if query does not match after rewrite Skip global ordinals loading if query does not match after rewrite Dec 1, 2023
@elasticsearchmachine
Copy link
Collaborator

Hi @martijnvg, I've created a changelog YAML for you.

@martijnvg martijnvg marked this pull request as ready for review December 1, 2023 13:50
@elasticsearchmachine elasticsearchmachine added the Team:Analytics Meta label for analytical engine team (ESQL/Aggs/Geo) label Dec 1, 2023
@elasticsearchmachine
Copy link
Collaborator

Pinging @elastic/es-analytics-geo (Team:Analytics)

Copy link
Contributor

@iverase iverase left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice, LGTM

@martijnvg martijnvg added the auto-merge Automatically merge pull request when CI checks pass (NB doesn't wait for reviews!) label Dec 1, 2023
@elasticsearchmachine elasticsearchmachine merged commit 83cc25c into elastic:main Dec 1, 2023
15 checks passed
@martijnvg martijnvg deleted the do_not_search_in_case_of_match_no_docs branch December 1, 2023 16:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
:Analytics/Aggregations Aggregations auto-merge Automatically merge pull request when CI checks pass (NB doesn't wait for reviews!) >bug Team:Analytics Meta label for analytical engine team (ESQL/Aggs/Geo) v8.12.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants