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

top_hits fails with Null Pointer Exception when child of random_sampler agg #110134

Open
benwtrent opened this issue Jun 25, 2024 · 6 comments
Open
Labels
:Analytics/Aggregations Aggregations >bug :ml Machine learning Team:Analytics Meta label for analytical engine team (ESQL/Aggs/Geo) Team:ML Meta label for the ML team

Comments

@benwtrent
Copy link
Member

benwtrent commented Jun 25, 2024

Elasticsearch Version

any

Installed Plugins

No response

Java Version

bundled

OS Version

any

Problem Description

When I use the top_hits aggregation as a child of a random_sampler aggregation, it triggers a shard request failure with an NPE. It only throws an NPE when sort is not defined - if I add it (e.g. { "sort": { "@timestamp": "desc" } }) it returns results.

Steps to Reproduce

GET logs-*/_search
{
  "track_total_hits": false,
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "@timestamp": {
              "gte": "now-30s"
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "message": {
      "categorize_text": {
        "size": 6,
        "field": "message"
      },
      "aggs": {
        "samples": {
          "top_hits": {
            "size": 1,
            "_source": [
              "message"
            ]
          }
        }
      }
    }
  }
}

Logs (if relevant)

Details
{
  "error": {
    "root_cause": [
      {
        "type": "null_pointer_exception",
        "reason": """Cannot invoke "org.apache.lucene.search.Scorable.score()" because "this.scorer" is null""",
        "stack_trace": """org.elasticsearch.ElasticsearchException$1: Cannot invoke "org.apache.lucene.search.Scorable.score()" because "this.scorer" is null
	at [email protected]/org.elasticsearch.ElasticsearchException.guessRootCauses(ElasticsearchException.java:704)
	at [email protected]/org.elasticsearch.action.search.SearchPhaseExecutionException.guessRootCauses(SearchPhaseExecutionException.java:160)
	at [email protected]/org.elasticsearch.ElasticsearchException.guessRootCauses(ElasticsearchException.java:686)
	at [email protected]/org.elasticsearch.ElasticsearchException.generateFailureXContent(ElasticsearchException.java:632)
	at [email protected]/org.elasticsearch.rest.RestResponse.build(RestResponse.java:186)
	at [email protected]/org.elasticsearch.rest.RestResponse.<init>(RestResponse.java:145)
	at [email protected]/org.elasticsearch.rest.RestResponse.<init>(RestResponse.java:116)
	at [email protected]/org.elasticsearch.rest.action.RestActionListener.onFailure(RestActionListener.java:53)
	at [email protected]/org.elasticsearch.rest.action.RestCancellableNodeClient$1.onFailure(RestCancellableNodeClient.java:96)
	at [email protected]/org.elasticsearch.tasks.TaskManager$1.onFailure(TaskManager.java:214)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeAcceptException(ActionListenerImplementations.java:62)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeOnFailure(ActionListenerImplementations.java:73)
	at [email protected]/org.elasticsearch.action.DelegatingActionListener.onFailure(DelegatingActionListener.java:31)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations$RunBeforeActionListener.onFailure(ActionListenerImplementations.java:317)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeAcceptException(ActionListenerImplementations.java:62)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeOnFailure(ActionListenerImplementations.java:73)
	at [email protected]/org.elasticsearch.action.DelegatingActionListener.onFailure(DelegatingActionListener.java:31)
	at [email protected]/org.elasticsearch.action.support.ContextPreservingActionListener.onFailure(ContextPreservingActionListener.java:39)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeAcceptException(ActionListenerImplementations.java:62)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeOnFailure(ActionListenerImplementations.java:73)
	at [email protected]/org.elasticsearch.action.DelegatingActionListener.onFailure(DelegatingActionListener.java:31)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeAcceptException(ActionListenerImplementations.java:62)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeOnFailure(ActionListenerImplementations.java:73)
	at [email protected]/org.elasticsearch.action.DelegatingActionListener.onFailure(DelegatingActionListener.java:31)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeAcceptException(ActionListenerImplementations.java:62)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeOnFailure(ActionListenerImplementations.java:73)
	at [email protected]/org.elasticsearch.action.DelegatingActionListener.onFailure(DelegatingActionListener.java:31)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations$RunAfterActionListener.onFailure(ActionListenerImplementations.java:278)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction.raisePhaseFailure(AbstractSearchAsyncAction.java:747)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction.onPhaseFailure(AbstractSearchAsyncAction.java:724)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:416)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction.onPhaseDone(AbstractSearchAsyncAction.java:756)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction.onShardFailure(AbstractSearchAsyncAction.java:509)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction$1.onFailure(AbstractSearchAsyncAction.java:337)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeAcceptException(ActionListenerImplementations.java:62)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeOnFailure(ActionListenerImplementations.java:73)
	at [email protected]/org.elasticsearch.action.DelegatingActionListener.onFailure(DelegatingActionListener.java:31)
	at [email protected]/org.elasticsearch.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:53)
	at [email protected]/org.elasticsearch.action.search.SearchTransportService$ConnectionCountingHandler.handleException(SearchTransportService.java:672)
	at [email protected]/org.elasticsearch.transport.TransportService$UnregisterChildTransportResponseHandler.handleException(TransportService.java:1766)
	at [email protected]/org.elasticsearch.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1490)
	at [email protected]/org.elasticsearch.transport.InboundHandler.doHandleException(InboundHandler.java:474)
	at [email protected]/org.elasticsearch.transport.InboundHandler.handleException(InboundHandler.java:461)
	at [email protected]/org.elasticsearch.transport.InboundHandler.handlerResponseError(InboundHandler.java:452)
	at [email protected]/org.elasticsearch.transport.InboundHandler.executeResponseHandler(InboundHandler.java:146)
	at [email protected]/org.elasticsearch.transport.InboundHandler.messageReceived(InboundHandler.java:123)
	at [email protected]/org.elasticsearch.transport.InboundHandler.inboundMessage(InboundHandler.java:97)
	at [email protected]/org.elasticsearch.transport.TcpTransport.inboundMessage(TcpTransport.java:821)
	at [email protected]/org.elasticsearch.transport.InboundPipeline.forwardFragments(InboundPipeline.java:124)
	at [email protected]/org.elasticsearch.transport.InboundPipeline.doHandleBytes(InboundPipeline.java:96)
	at [email protected]/org.elasticsearch.transport.InboundPipeline.handleBytes(InboundPipeline.java:61)
	at [email protected]/org.elasticsearch.transport.netty4.Netty4MessageInboundHandler.channelRead(Netty4MessageInboundHandler.java:57)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at [email protected]/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at [email protected]/io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1475)
	at [email protected]/io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1338)
	at [email protected]/io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1387)
	at [email protected]/io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)
	at [email protected]/io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)
	at [email protected]/io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at [email protected]/io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at [email protected]/io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
	at [email protected]/io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
	at [email protected]/io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
	at [email protected]/io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:689)
	at [email protected]/io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:652)
	at [email protected]/io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
	at [email protected]/io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
	at [email protected]/io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at java.base/java.lang.Thread.run(Thread.java:1570)
Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.lucene.search.Scorable.score()" because "this.scorer" is null
	at org.apache.lucene.search.TopScoreDocCollector$SimpleTopScoreDocCollector$1.collect(TopScoreDocCollector.java:72)
	at org.elasticsearch.search.aggregations.metrics.TopHitsAggregator$1.collect(TopHitsAggregator.java:158)
	at org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectBucket(BucketsAggregator.java:90)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.processTokenStream(CategorizeTextAggregator.java:204)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.collectFromSource(CategorizeTextAggregator.java:180)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.collect(CategorizeTextAggregator.java:163)
	at org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectExistingBucket(BucketsAggregator.java:98)
	at org.elasticsearch.search.aggregations.bucket.sampler.random.RandomSamplerAggregator$1.collect(RandomSamplerAggregator.java:108)
	at org.elasticsearch.search.aggregations.LeafBucketCollector.collect(LeafBucketCollector.java:86)
	at org.apache.lucene.search.FilterLeafCollector.collect(FilterLeafCollector.java:42)
	at org.apache.lucene.search.MatchAllDocsQuery$1$1.score(MatchAllDocsQuery.java:63)
	at org.apache.lucene.search.ConstantScoreQuery$ConstantBulkScorer.score(ConstantScoreQuery.java:99)
	at org.elasticsearch.search.internal.CancellableBulkScorer.score(CancellableBulkScorer.java:45)
	at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:38)
	at org.elasticsearch.search.internal.ContextIndexSearcher.searchLeaf(ContextIndexSearcher.java:436)
	at org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:365)
	at org.elasticsearch.search.internal.ContextIndexSearcher.lambda$search$3(ContextIndexSearcher.java:350)
	at org.apache.lucene.search.TaskExecutor$TaskGroup.lambda$createTask$0(TaskExecutor.java:117)
	at java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:33)
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:984)
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.lang.Thread.run(Thread.java:1570)
"""
      }
    ],
    "type": "search_phase_execution_exception",
    "reason": "all shards failed",
    "phase": "query",
    "grouped": true,
    "failed_shards": [
      {
        "shard": 0,
        "index": ".ds-logs-foo-default-2024.06.25-000001",
        "node": "zVlBFBb8QqSNzSPZgqKNfg",
        "reason": {
          "type": "null_pointer_exception",
          "reason": """Cannot invoke "org.apache.lucene.search.Scorable.score()" because "this.scorer" is null""",
          "stack_trace": """java.lang.NullPointerException: Cannot invoke "org.apache.lucene.search.Scorable.score()" because "this.scorer" is null
	at org.apache.lucene.search.TopScoreDocCollector$SimpleTopScoreDocCollector$1.collect(TopScoreDocCollector.java:72)
	at org.elasticsearch.search.aggregations.metrics.TopHitsAggregator$1.collect(TopHitsAggregator.java:158)
	at org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectBucket(BucketsAggregator.java:90)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.processTokenStream(CategorizeTextAggregator.java:204)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.collectFromSource(CategorizeTextAggregator.java:180)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.collect(CategorizeTextAggregator.java:163)
	at org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectExistingBucket(BucketsAggregator.java:98)
	at org.elasticsearch.search.aggregations.bucket.sampler.random.RandomSamplerAggregator$1.collect(RandomSamplerAggregator.java:108)
	at org.elasticsearch.search.aggregations.LeafBucketCollector.collect(LeafBucketCollector.java:86)
	at org.apache.lucene.search.FilterLeafCollector.collect(FilterLeafCollector.java:42)
	at org.apache.lucene.search.MatchAllDocsQuery$1$1.score(MatchAllDocsQuery.java:63)
	at org.apache.lucene.search.ConstantScoreQuery$ConstantBulkScorer.score(ConstantScoreQuery.java:99)
	at org.elasticsearch.search.internal.CancellableBulkScorer.score(CancellableBulkScorer.java:45)
	at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:38)
	at org.elasticsearch.search.internal.ContextIndexSearcher.searchLeaf(ContextIndexSearcher.java:436)
	at org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:365)
	at org.elasticsearch.search.internal.ContextIndexSearcher.lambda$search$3(ContextIndexSearcher.java:350)
	at org.apache.lucene.search.TaskExecutor$TaskGroup.lambda$createTask$0(TaskExecutor.java:117)
	at java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:33)
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:984)
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.lang.Thread.run(Thread.java:1570)
"""
        }
      }
    ],
    "caused_by": {
      "type": "null_pointer_exception",
      "reason": """Cannot invoke "org.apache.lucene.search.Scorable.score()" because "this.scorer" is null""",
      "caused_by": {
        "type": "null_pointer_exception",
        "reason": """Cannot invoke "org.apache.lucene.search.Scorable.score()" because "this.scorer" is null""",
        "stack_trace": """java.lang.NullPointerException: Cannot invoke "org.apache.lucene.search.Scorable.score()" because "this.scorer" is null
	at org.apache.lucene.search.TopScoreDocCollector$SimpleTopScoreDocCollector$1.collect(TopScoreDocCollector.java:72)
	at org.elasticsearch.search.aggregations.metrics.TopHitsAggregator$1.collect(TopHitsAggregator.java:158)
	at org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectBucket(BucketsAggregator.java:90)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.processTokenStream(CategorizeTextAggregator.java:204)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.collectFromSource(CategorizeTextAggregator.java:180)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.collect(CategorizeTextAggregator.java:163)
	at org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectExistingBucket(BucketsAggregator.java:98)
	at org.elasticsearch.search.aggregations.bucket.sampler.random.RandomSamplerAggregator$1.collect(RandomSamplerAggregator.java:108)
	at org.elasticsearch.search.aggregations.LeafBucketCollector.collect(LeafBucketCollector.java:86)
	at org.apache.lucene.search.FilterLeafCollector.collect(FilterLeafCollector.java:42)
	at org.apache.lucene.search.MatchAllDocsQuery$1$1.score(MatchAllDocsQuery.java:63)
	at org.apache.lucene.search.ConstantScoreQuery$ConstantBulkScorer.score(ConstantScoreQuery.java:99)
	at org.elasticsearch.search.internal.CancellableBulkScorer.score(CancellableBulkScorer.java:45)
	at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:38)
	at org.elasticsearch.search.internal.ContextIndexSearcher.searchLeaf(ContextIndexSearcher.java:436)
	at org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:365)
	at org.elasticsearch.search.internal.ContextIndexSearcher.lambda$search$3(ContextIndexSearcher.java:350)
	at org.apache.lucene.search.TaskExecutor$TaskGroup.lambda$createTask$0(TaskExecutor.java:117)
	at java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:33)
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:984)
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.lang.Thread.run(Thread.java:1570)
"""
      },
      "stack_trace": """org.elasticsearch.ElasticsearchException$1: Cannot invoke "org.apache.lucene.search.Scorable.score()" because "this.scorer" is null
	at [email protected]/org.elasticsearch.ElasticsearchException.guessRootCauses(ElasticsearchException.java:704)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:414)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction.onPhaseDone(AbstractSearchAsyncAction.java:756)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction.onShardFailure(AbstractSearchAsyncAction.java:509)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction$1.onFailure(AbstractSearchAsyncAction.java:337)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeAcceptException(ActionListenerImplementations.java:62)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeOnFailure(ActionListenerImplementations.java:73)
	at [email protected]/org.elasticsearch.action.DelegatingActionListener.onFailure(DelegatingActionListener.java:31)
	at [email protected]/org.elasticsearch.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:53)
	at [email protected]/org.elasticsearch.action.search.SearchTransportService$ConnectionCountingHandler.handleException(SearchTransportService.java:672)
	at [email protected]/org.elasticsearch.transport.TransportService$UnregisterChildTransportResponseHandler.handleException(TransportService.java:1766)
	at [email protected]/org.elasticsearch.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1490)
	at [email protected]/org.elasticsearch.transport.InboundHandler.doHandleException(InboundHandler.java:474)
	at [email protected]/org.elasticsearch.transport.InboundHandler.handleException(InboundHandler.java:461)
	at [email protected]/org.elasticsearch.transport.InboundHandler.handlerResponseError(InboundHandler.java:452)
	at [email protected]/org.elasticsearch.transport.InboundHandler.executeResponseHandler(InboundHandler.java:146)
	at [email protected]/org.elasticsearch.transport.InboundHandler.messageReceived(InboundHandler.java:123)
	at [email protected]/org.elasticsearch.transport.InboundHandler.inboundMessage(InboundHandler.java:97)
	at [email protected]/org.elasticsearch.transport.TcpTransport.inboundMessage(TcpTransport.java:821)
	at [email protected]/org.elasticsearch.transport.InboundPipeline.forwardFragments(InboundPipeline.java:124)
	at [email protected]/org.elasticsearch.transport.InboundPipeline.doHandleBytes(InboundPipeline.java:96)
	at [email protected]/org.elasticsearch.transport.InboundPipeline.handleBytes(InboundPipeline.java:61)
	at [email protected]/org.elasticsearch.transport.netty4.Netty4MessageInboundHandler.channelRead(Netty4MessageInboundHandler.java:57)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at [email protected]/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at [email protected]/io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1475)
	at [email protected]/io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1338)
	at [email protected]/io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1387)
	at [email protected]/io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)
	at [email protected]/io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)
	at [email protected]/io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at [email protected]/io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at [email protected]/io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
	at [email protected]/io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
	at [email protected]/io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
	at [email protected]/io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:689)
	at [email protected]/io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:652)
	at [email protected]/io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
	at [email protected]/io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
	at [email protected]/io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at java.base/java.lang.Thread.run(Thread.java:1570)
Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.lucene.search.Scorable.score()" because "this.scorer" is null
	at org.apache.lucene.search.TopScoreDocCollector$SimpleTopScoreDocCollector$1.collect(TopScoreDocCollector.java:72)
	at org.elasticsearch.search.aggregations.metrics.TopHitsAggregator$1.collect(TopHitsAggregator.java:158)
	at org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectBucket(BucketsAggregator.java:90)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.processTokenStream(CategorizeTextAggregator.java:204)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.collectFromSource(CategorizeTextAggregator.java:180)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.collect(CategorizeTextAggregator.java:163)
	at org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectExistingBucket(BucketsAggregator.java:98)
	at org.elasticsearch.search.aggregations.bucket.sampler.random.RandomSamplerAggregator$1.collect(RandomSamplerAggregator.java:108)
	at org.elasticsearch.search.aggregations.LeafBucketCollector.collect(LeafBucketCollector.java:86)
	at org.apache.lucene.search.FilterLeafCollector.collect(FilterLeafCollector.java:42)
	at org.apache.lucene.search.MatchAllDocsQuery$1$1.score(MatchAllDocsQuery.java:63)
	at org.apache.lucene.search.ConstantScoreQuery$ConstantBulkScorer.score(ConstantScoreQuery.java:99)
	at org.elasticsearch.search.internal.CancellableBulkScorer.score(CancellableBulkScorer.java:45)
	at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:38)
	at org.elasticsearch.search.internal.ContextIndexSearcher.searchLeaf(ContextIndexSearcher.java:436)
	at org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:365)
	at org.elasticsearch.search.internal.ContextIndexSearcher.lambda$search$3(ContextIndexSearcher.java:350)
	at org.apache.lucene.search.TaskExecutor$TaskGroup.lambda$createTask$0(TaskExecutor.java:117)
	at java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:33)
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:984)
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.lang.Thread.run(Thread.java:1570)
"""
    },
    "stack_trace": """Failed to execute phase [query], all shards failed; shardFailures {[zVlBFBb8QqSNzSPZgqKNfg][.ds-logs-foo-default-2024.06.25-000001][0]: org.elasticsearch.transport.RemoteTransportException: [instance-0000000002][172.17.0.6:19830][indices:data/read/search[phase/query]]
Caused by: org.elasticsearch.search.query.QueryPhaseExecutionException: Query Failed [Failed to execute main query]
	at org.elasticsearch.search.query.QueryPhase.addCollectorsAndSearch(QueryPhase.java:229)
	at org.elasticsearch.search.query.QueryPhase.executeQuery(QueryPhase.java:135)
	at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:62)
	at org.elasticsearch.indices.IndicesService.lambda$loadIntoContext$38(IndicesService.java:1592)
	at org.elasticsearch.indices.IndicesService.lambda$cacheShardLevelResult$39(IndicesService.java:1658)
	at org.elasticsearch.indices.IndicesRequestCache$Loader.load(IndicesRequestCache.java:164)
	at org.elasticsearch.indices.IndicesRequestCache$Loader.load(IndicesRequestCache.java:147)
	at org.elasticsearch.common.cache.Cache.computeIfAbsent(Cache.java:439)
	at org.elasticsearch.indices.IndicesRequestCache.getOrCompute(IndicesRequestCache.java:110)
	at org.elasticsearch.indices.IndicesService.cacheShardLevelResult(IndicesService.java:1664)
	at org.elasticsearch.indices.IndicesService.loadIntoContext(IndicesService.java:1586)
	at org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:528)
	at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:688)
	at org.elasticsearch.search.SearchService.lambda$executeQueryPhase$2(SearchService.java:557)
	at org.elasticsearch.action.ActionRunnable$3.accept(ActionRunnable.java:78)
	at org.elasticsearch.action.ActionRunnable$3.accept(ActionRunnable.java:75)
	at org.elasticsearch.action.ActionRunnable$4.doRun(ActionRunnable.java:100)
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26)
	at org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:33)
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:984)
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.lang.Thread.run(Thread.java:1570)
Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.lucene.search.Scorable.score()" because "this.scorer" is null
	at org.apache.lucene.search.TopScoreDocCollector$SimpleTopScoreDocCollector$1.collect(TopScoreDocCollector.java:72)
	at org.elasticsearch.search.aggregations.metrics.TopHitsAggregator$1.collect(TopHitsAggregator.java:158)
	at org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectBucket(BucketsAggregator.java:90)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.processTokenStream(CategorizeTextAggregator.java:204)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.collectFromSource(CategorizeTextAggregator.java:180)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.collect(CategorizeTextAggregator.java:163)
	at org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectExistingBucket(BucketsAggregator.java:98)
	at org.elasticsearch.search.aggregations.bucket.sampler.random.RandomSamplerAggregator$1.collect(RandomSamplerAggregator.java:108)
	at org.elasticsearch.search.aggregations.LeafBucketCollector.collect(LeafBucketCollector.java:86)
	at org.apache.lucene.search.FilterLeafCollector.collect(FilterLeafCollector.java:42)
	at org.apache.lucene.search.MatchAllDocsQuery$1$1.score(MatchAllDocsQuery.java:63)
	at org.apache.lucene.search.ConstantScoreQuery$ConstantBulkScorer.score(ConstantScoreQuery.java:99)
	at org.elasticsearch.search.internal.CancellableBulkScorer.score(CancellableBulkScorer.java:45)
	at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:38)
	at org.elasticsearch.search.internal.ContextIndexSearcher.searchLeaf(ContextIndexSearcher.java:436)
	at org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:365)
	at org.elasticsearch.search.internal.ContextIndexSearcher.lambda$search$3(ContextIndexSearcher.java:350)
	at org.apache.lucene.search.TaskExecutor$TaskGroup.lambda$createTask$0(TaskExecutor.java:117)
	at java.util.concurrent.FutureTask.run(FutureTask.java:317)
	... 6 more
}
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction.onPhaseFailure(AbstractSearchAsyncAction.java:724)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:416)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction.onPhaseDone(AbstractSearchAsyncAction.java:756)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction.onShardFailure(AbstractSearchAsyncAction.java:509)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction$1.onFailure(AbstractSearchAsyncAction.java:337)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeAcceptException(ActionListenerImplementations.java:62)
	at [email protected]/org.elasticsearch.action.ActionListenerImplementations.safeOnFailure(ActionListenerImplementations.java:73)
	at [email protected]/org.elasticsearch.action.DelegatingActionListener.onFailure(DelegatingActionListener.java:31)
	at [email protected]/org.elasticsearch.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:53)
	at [email protected]/org.elasticsearch.action.search.SearchTransportService$ConnectionCountingHandler.handleException(SearchTransportService.java:672)
	at [email protected]/org.elasticsearch.transport.TransportService$UnregisterChildTransportResponseHandler.handleException(TransportService.java:1766)
	at [email protected]/org.elasticsearch.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1490)
	at [email protected]/org.elasticsearch.transport.InboundHandler.doHandleException(InboundHandler.java:474)
	at [email protected]/org.elasticsearch.transport.InboundHandler.handleException(InboundHandler.java:461)
	at [email protected]/org.elasticsearch.transport.InboundHandler.handlerResponseError(InboundHandler.java:452)
	at [email protected]/org.elasticsearch.transport.InboundHandler.executeResponseHandler(InboundHandler.java:146)
	at [email protected]/org.elasticsearch.transport.InboundHandler.messageReceived(InboundHandler.java:123)
	at [email protected]/org.elasticsearch.transport.InboundHandler.inboundMessage(InboundHandler.java:97)
	at [email protected]/org.elasticsearch.transport.TcpTransport.inboundMessage(TcpTransport.java:821)
	at [email protected]/org.elasticsearch.transport.InboundPipeline.forwardFragments(InboundPipeline.java:124)
	at [email protected]/org.elasticsearch.transport.InboundPipeline.doHandleBytes(InboundPipeline.java:96)
	at [email protected]/org.elasticsearch.transport.InboundPipeline.handleBytes(InboundPipeline.java:61)
	at [email protected]/org.elasticsearch.transport.netty4.Netty4MessageInboundHandler.channelRead(Netty4MessageInboundHandler.java:57)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at [email protected]/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at [email protected]/io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1475)
	at [email protected]/io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1338)
	at [email protected]/io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1387)
	at [email protected]/io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)
	at [email protected]/io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)
	at [email protected]/io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at [email protected]/io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
	at [email protected]/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at [email protected]/io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
	at [email protected]/io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
	at [email protected]/io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
	at [email protected]/io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:689)
	at [email protected]/io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:652)
	at [email protected]/io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
	at [email protected]/io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
	at [email protected]/io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at java.base/java.lang.Thread.run(Thread.java:1570)
Caused by: org.elasticsearch.ElasticsearchException$1: Cannot invoke "org.apache.lucene.search.Scorable.score()" because "this.scorer" is null
	at [email protected]/org.elasticsearch.ElasticsearchException.guessRootCauses(ElasticsearchException.java:704)
	at [email protected]/org.elasticsearch.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:414)
	... 49 more
Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.lucene.search.Scorable.score()" because "this.scorer" is null
	at org.apache.lucene.search.TopScoreDocCollector$SimpleTopScoreDocCollector$1.collect(TopScoreDocCollector.java:72)
	at org.elasticsearch.search.aggregations.metrics.TopHitsAggregator$1.collect(TopHitsAggregator.java:158)
	at org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectBucket(BucketsAggregator.java:90)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.processTokenStream(CategorizeTextAggregator.java:204)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.collectFromSource(CategorizeTextAggregator.java:180)
	at org.elasticsearch.xpack.ml.aggs.categorization.CategorizeTextAggregator$1.collect(CategorizeTextAggregator.java:163)
	at org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectExistingBucket(BucketsAggregator.java:98)
	at org.elasticsearch.search.aggregations.bucket.sampler.random.RandomSamplerAggregator$1.collect(RandomSamplerAggregator.java:108)
	at org.elasticsearch.search.aggregations.LeafBucketCollector.collect(LeafBucketCollector.java:86)
	at org.apache.lucene.search.FilterLeafCollector.collect(FilterLeafCollector.java:42)
	at org.apache.lucene.search.MatchAllDocsQuery$1$1.score(MatchAllDocsQuery.java:63)
	at org.apache.lucene.search.ConstantScoreQuery$ConstantBulkScorer.score(ConstantScoreQuery.java:99)
	at org.elasticsearch.search.internal.CancellableBulkScorer.score(CancellableBulkScorer.java:45)
	at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:38)
	at org.elasticsearch.search.internal.ContextIndexSearcher.searchLeaf(ContextIndexSearcher.java:436)
	at org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:365)
	at org.elasticsearch.search.internal.ContextIndexSearcher.lambda$search$3(ContextIndexSearcher.java:350)
	at org.apache.lucene.search.TaskExecutor$TaskGroup.lambda$createTask$0(TaskExecutor.java:117)
	at java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:33)
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:984)
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.lang.Thread.run(Thread.java:1570)
"""
  },
  "status": 500
}
@benwtrent benwtrent added >bug :Analytics/Aggregations Aggregations :ml Machine learning labels Jun 25, 2024
@elasticsearchmachine elasticsearchmachine added Team:Analytics Meta label for analytical engine team (ESQL/Aggs/Geo) Team:ML Meta label for the ML team labels Jun 25, 2024
@elasticsearchmachine
Copy link
Collaborator

Pinging @elastic/ml-core (Team:ML)

@elasticsearchmachine
Copy link
Collaborator

Pinging @elastic/es-analytical-engine (Team:Analytics)

@benwtrent
Copy link
Member Author

@dgieselaar is the original finder of this bug.

@dgieselaar it doesn't seem like the request has random_sampler in it at all? Is this all about categorize_text with a top_hits sub aggregation?

@dgieselaar
Copy link
Member

@benwtrent no, my head is a mess today. copied the wrong request. Here is the right one:

GET logs-foo-default*/_search?error_trace=true
{
  "track_total_hits": false,
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "@timestamp": {
              "gte": "now-24h"
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "sampler": {
      "random_sampler": {
        "probability": 1
      },
      "aggs": {
        "samples": {
          "top_hits": {
            "size": 3,
            "_source": [
              "message"
            ]
          }
        }
      }
    }
  }
}

@benwtrent
Copy link
Member Author

benwtrent commented Jun 25, 2024

Thank you @dgieselaar ! I was able to replicate. It is repeatable with some very simple text data.

POST test_text/_search
{
  "aggs": {
    "random_sampler": {
      "random_sampler": {
        "probability": 0.5
      },
      "aggs": {
        "samples": {
          "top_hits": {
            "size": 1,
            "_source": [
              "text"
            ]
          }
        }
      }
    }
  }
}
Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.lucene.search.Scorable.score()" because "this.scorer" is null
	at [email protected]/org.apache.lucene.search.TopScoreDocCollector$SimpleTopScoreDocCollector$1.collect(TopScoreDocCollector.java:72)
	at [email protected]/org.elasticsearch.search.aggregations.metrics.TopHitsAggregator$1.collect(TopHitsAggregator.java:159)
	at [email protected]/org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectExistingBucket(BucketsAggregator.java:97)
	at [email protected]/org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectBucket(BucketsAggregator.java:81)
	at [email protected]/org.elasticsearch.search.aggregations.bucket.sampler.random.RandomSamplerAggregator.getLeafCollector(RandomSamplerAggregator.java:120)
	at [email protected]/org.elasticsearch.search.aggregations.AggregatorBase.getLeafCollector(AggregatorBase.java:222)
	at [email protected]/org.elasticsearch.search.aggregations.MultiBucketCollector$1.getLeafCollector(MultiBucketCollector.java:92)
	at [email protected]/org.elasticsearch.search.aggregations.AggregatorCollector.getLeafCollector(AggregatorCollector.java:35)
	at [email protected]/org.elasticsearch.search.query.QueryPhaseCollector.getLeafCollector(QueryPhaseCollector.java:165)
	at [email protected]/org.elasticsearch.search.internal.ContextIndexSearcher.searchLeaf(ContextIndexSearcher.java:415)
	at [email protected]/org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:360)
	at [email protected]/org.elasticsearch.search.internal.ContextIndexSearcher.lambda$search$4(ContextIndexSearcher.java:345)
	at [email protected]/org.apache.lucene.search.TaskExecutor$TaskGroup.lambda$createTask$0(TaskExecutor.java:117)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)

@benwtrent
Copy link
Member Author

There are two causes here:

One, with probility is 1.0 we return a collector that doesn't accept setting the scorer.

        if (probability >= 1.0) {
            grow(1);
            return new LeafBucketCollector() {
                @Override
                public void collect(int doc, long owningBucketOrd) throws IOException {
                    collectExistingBucket(sub, doc, 0);
                }
            };
        }

So, that needs to accept scorable and pass it to the sub.

But for collectExistingBucket, we need the scorable there and I am not sure its possible.

                    "stack_trace": "java.lang.NullPointerException: Cannot invoke \"org.apache.lucene.search.Scorable.score()\" because \"this.scorer\" is null
\tat [email protected]/org.apache.lucene.search.TopScoreDocCollector$SimpleTopScoreDocCollector$1.collect(TopScoreDocCollector.java:72)
\tat [email protected]/org.elasticsearch.search.aggregations.metrics.TopHitsAggregator$1.collect(TopHitsAggregator.java:158)
\tat [email protected]/org.elasticsearch.search.aggregations.bucket.BucketsAggregator.collectExistingBucket(BucketsAggregator.java:98)
\tat [email protected]/org.elasticsearch.search.aggregations.bucket.sampler.random.RandomSamplerAggregator.getLeafCollector(RandomSamplerAggregator.java:132)
\tat [email protected]/org.elasticsearch.search.aggregations.AggregatorBase.getLeafCollector(AggregatorBase.java:222)
\tat [email protected]/org.elasticsearch.search.aggregations.MultiBucketCollector$1.getLeafCollector(MultiBucketCollector.java:92)
\tat [email protected]/org.elasticsearch.search.aggregations.AggregatorCollector.getLeafCollector(AggregatorCollector.java:35)
\tat [email protected]/org.elasticsearch.search.query.QueryPhaseCollector.getLeafCollector(QueryPhaseCollector.java:165)
\tat [email protected]/org.elasticsearch.search.internal.ContextIndexSearcher.searchLeaf(ContextIndexSearcher.java:420)
\tat [email protected]/org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:365)
\tat [email protected]/org.elasticsearch.search.internal.ContextIndexSearcher.lambda$search$3(ContextIndexSearcher.java:350)
\tat [email protected]/org.apache.lucene.search.TaskExecutor$TaskGroup.lambda$createTask$0(TaskExecutor.java:117)
\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
\tat [email protected]/org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:33)
\tat [email protected]/org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:984)
\tat [email protected]/org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26)
\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
\tat java.base/java.lang.Thread.run(Thread.java:1570)
"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
:Analytics/Aggregations Aggregations >bug :ml Machine learning Team:Analytics Meta label for analytical engine team (ESQL/Aggs/Geo) Team:ML Meta label for the ML team
Projects
None yet
Development

No branches or pull requests

3 participants