-
Notifications
You must be signed in to change notification settings - Fork 25.8k
Closed
Labels
:Search Relevance/RankingScoring, rescoring, rank evaluation.Scoring, rescoring, rank evaluation.>bugTeam:Search RelevanceMeta label for the Search Relevance team in ElasticsearchMeta label for the Search Relevance team in Elasticsearchpriority:highA label for assessing bug priority to be used by ES engineersA label for assessing bug priority to be used by ES engineers
Description
Elasticsearch Version
8.17.4
Installed Plugins
No response
Java Version
bundled
OS Version
Cloud
Problem Description
When using the rules retriever, the query will fail on at least one shard. It seems to be inconsistent and will switch between which shards fail (when there is more than one on the searched index) and will sometimes apply the rules scoring and sometimes will not.
Steps to Reproduce
This appears to be reproducible with a brand new rules set and a brand new content index.
Rules:
PUT _query_rules/my-rules
{
"rules": [
{
"rule_id": "1",
"type": "pinned",
"actions": {
"ids": ["6759e60f09a922ba4dbac10d"]
},
"criteria": [
{
"type": "contains",
"values": ["search"],
"metadata": "user_query"
}
]
}
]
}
Query:
POST search-es-blog/_search?error_trace=true&explain=true
{
"from": 0,
"size": 10,
"retriever": {
"rule": {
"rank_window_size": 10000,
"match_criteria": {
"user_query": "search"
},
"ruleset_ids": [
"my-rules"
],
"retriever": {
"standard": {
"query": {
"match_all": {}
}
}
}
}
},
"_source": false
}
My index was web crawling the Elastic blog, but the actual content of the index does not seem to matter.
Logs (if relevant)
Stack Trace:
org.elasticsearch.ElasticsearchException$1: Unknown NamedWriteable [org.elasticsearch.search.rank.RankDoc][query_rule_rank_doc]
at org.elasticsearch.server@8.17.4/org.elasticsearch.ElasticsearchException.guessRootCauses(ElasticsearchException.java:706)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.search.SearchPhaseExecutionException.guessRootCauses(SearchPhaseExecutionException.java:161)
at org.elasticsearch.server@8.17.4/org.elasticsearch.ElasticsearchException.guessRootCauses(ElasticsearchException.java:688)
at org.elasticsearch.server@8.17.4/org.elasticsearch.ElasticsearchException.generateFailureXContent(ElasticsearchException.java:634)
at org.elasticsearch.server@8.17.4/org.elasticsearch.rest.RestResponse.build(RestResponse.java:200)
at org.elasticsearch.server@8.17.4/org.elasticsearch.rest.RestResponse.<init>(RestResponse.java:159)
at org.elasticsearch.server@8.17.4/org.elasticsearch.rest.RestResponse.<init>(RestResponse.java:120)
at org.elasticsearch.server@8.17.4/org.elasticsearch.rest.action.RestActionListener.onFailure(RestActionListener.java:54)
at org.elasticsearch.server@8.17.4/org.elasticsearch.rest.action.RestCancellableNodeClient$1.onFailure(RestCancellableNodeClient.java:97)
at org.elasticsearch.server@8.17.4/org.elasticsearch.tasks.TaskManager$1.onFailure(TaskManager.java:215)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListenerImplementations.safeAcceptException(ActionListenerImplementations.java:64)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListenerImplementations.safeOnFailure(ActionListenerImplementations.java:75)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.DelegatingActionListener.onFailure(DelegatingActionListener.java:32)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListenerImplementations$RunBeforeActionListener.onFailure(ActionListenerImplementations.java:346)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListenerImplementations.safeAcceptException(ActionListenerImplementations.java:64)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListenerImplementations.safeOnFailure(ActionListenerImplementations.java:75)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.DelegatingActionListener.onFailure(DelegatingActionListener.java:32)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.support.ContextPreservingActionListener.onFailure(ContextPreservingActionListener.java:40)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListenerImplementations.safeAcceptException(ActionListenerImplementations.java:64)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListenerImplementations.safeOnFailure(ActionListenerImplementations.java:75)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.DelegatingActionListener.onFailure(DelegatingActionListener.java:32)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.search.TransportSearchAction$SearchResponseActionListener.onFailure(TransportSearchAction.java:1952)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.search.TransportSearchAction$1.lambda$onFailure$1(TransportSearchAction.java:524)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListenerImplementations$RunAfterActionListener.onResponse(ActionListenerImplementations.java:300)
at org.elasticsearch.server@8.17.4/org.elasticsearch.tasks.TaskManager$1.onResponse(TaskManager.java:203)
at org.elasticsearch.server@8.17.4/org.elasticsearch.tasks.TaskManager$1.onResponse(TaskManager.java:197)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListenerImplementations$RunBeforeActionListener.onResponse(ActionListenerImplementations.java:336)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:33)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListenerImplementations$MappedActionListener.onResponse(ActionListenerImplementations.java:97)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.search.ClearScrollController.lambda$closeContexts$7(ClearScrollController.java:168)
at org.elasticsearch.base@8.17.4/org.elasticsearch.core.AbstractRefCounted$1.closeInternal(AbstractRefCounted.java:125)
at org.elasticsearch.base@8.17.4/org.elasticsearch.core.AbstractRefCounted.decRef(AbstractRefCounted.java:77)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.support.RefCountingRunnable.close(RefCountingRunnable.java:113)
at org.elasticsearch.base@8.17.4/org.elasticsearch.core.Releasables.close(Releasables.java:35)
at org.elasticsearch.base@8.17.4/org.elasticsearch.core.Releasables.closeExpectNoException(Releasables.java:57)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListenerImplementations$2.run(ActionListenerImplementations.java:51)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:217)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListenerImplementations$MappedActionListener.onResponse(ActionListenerImplementations.java:97)
at org.elasticsearch.server@8.17.4/org.elasticsearch.action.ActionListenerResponseHandler.handleResponse(ActionListenerResponseHandler.java:49)
at org.elasticsearch.server@8.17.4/org.elasticsearch.transport.TransportService$ContextRestoreResponseHandler.handleResponse(TransportService.java:1500)
at org.elasticsearch.server@8.17.4/org.elasticsearch.transport.InboundHandler.doHandleResponse(InboundHandler.java:434)
at org.elasticsearch.server@8.17.4/org.elasticsearch.transport.InboundHandler.handleResponse(InboundHandler.java:383)
at org.elasticsearch.server@8.17.4/org.elasticsearch.transport.InboundHandler.executeResponseHandler(InboundHandler.java:150)
at org.elasticsearch.server@8.17.4/org.elasticsearch.transport.InboundHandler.messageReceived(InboundHandler.java:125)
at org.elasticsearch.server@8.17.4/org.elasticsearch.transport.InboundHandler.inboundMessage(InboundHandler.java:98)
at org.elasticsearch.server@8.17.4/org.elasticsearch.transport.TcpTransport.inboundMessage(TcpTransport.java:822)
at org.elasticsearch.server@8.17.4/org.elasticsearch.transport.InboundPipeline.forwardFragments(InboundPipeline.java:125)
at org.elasticsearch.server@8.17.4/org.elasticsearch.transport.InboundPipeline.doHandleBytes(InboundPipeline.java:97)
at org.elasticsearch.server@8.17.4/org.elasticsearch.transport.InboundPipeline.handleBytes(InboundPipeline.java:62)
at org.elasticsearch.transport.netty4@8.17.4/org.elasticsearch.transport.netty4.Netty4MessageInboundHandler.channelRead(Netty4MessageInboundHandler.java:55)
at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.codec@4.1.118.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:107)
at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler@4.1.118.Final/io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1515)
at io.netty.handler@4.1.118.Final/io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1378)
at io.netty.handler@4.1.118.Final/io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1427)
at io.netty.codec@4.1.118.Final/io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)
at io.netty.codec@4.1.118.Final/io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)
at io.netty.codec@4.1.118.Final/io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.transport@4.1.118.Final/io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357)
at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.transport@4.1.118.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.transport@4.1.118.Final/io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868)
at io.netty.transport@4.1.118.Final/io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.transport@4.1.118.Final/io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:796)
at io.netty.transport@4.1.118.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:697)
at io.netty.transport@4.1.118.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:660)
at io.netty.transport@4.1.118.Final/io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at io.netty.common@4.1.118.Final/io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
at io.netty.common@4.1.118.Final/io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at java.base/java.lang.Thread.run(Thread.java:1575)
Caused by: java.lang.IllegalArgumentException: Unknown NamedWriteable [org.elasticsearch.search.rank.RankDoc][query_rule_rank_doc]
at org.elasticsearch.common.io.stream.NamedWriteableRegistry.throwOnUnknownWritable(NamedWriteableRegistry.java:151)
at org.elasticsearch.common.io.stream.NamedWriteableRegistry.getReader(NamedWriteableRegistry.java:126)
at org.elasticsearch.common.io.stream.NamedWriteableRegistry.getReader(NamedWriteableRegistry.java:109)
at org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput.readNamedWriteable(NamedWriteableAwareStreamInput.java:56)
at org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput.readNamedWriteable(NamedWriteableAwareStreamInput.java:33)
at org.elasticsearch.index.query.RankDocsQueryBuilder.lambda$new$0(RankDocsQueryBuilder.java:46)
at org.elasticsearch.common.io.stream.StreamInput.readArray(StreamInput.java:1090)
at org.elasticsearch.index.query.RankDocsQueryBuilder.<init>(RankDocsQueryBuilder.java:46)
at org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput.readNamedWriteable(NamedWriteableAwareStreamInput.java:57)
at org.elasticsearch.common.io.stream.NamedWriteableAwareStreamInput.readNamedWriteable(NamedWriteableAwareStreamInput.java:33)
at org.elasticsearch.search.builder.SubSearchSourceBuilder.<init>(SubSearchSourceBuilder.java:80)
at org.elasticsearch.common.io.stream.StreamInput.readCollection(StreamInput.java:1319)
at org.elasticsearch.common.io.stream.StreamInput.readCollectionAsList(StreamInput.java:1191)
at org.elasticsearch.search.builder.SearchSourceBuilder.<init>(SearchSourceBuilder.java:242)
at org.elasticsearch.common.io.stream.StreamInput.readOptional(StreamInput.java:1117)
at org.elasticsearch.common.io.stream.StreamInput.readOptionalWriteable(StreamInput.java:1107)
at org.elasticsearch.search.internal.ShardSearchRequest.<init>(ShardSearchRequest.java:287)
at org.elasticsearch.transport.RequestHandlerRegistry.newRequest(RequestHandlerRegistry.java:63)
at org.elasticsearch.transport.InboundHandler.handleRequest(InboundHandler.java:262)
at org.elasticsearch.transport.InboundHandler.messageReceived(InboundHandler.java:118)
at org.elasticsearch.transport.InboundHandler.inboundMessage(InboundHandler.java:98)
at org.elasticsearch.transport.TcpTransport.inboundMessage(TcpTransport.java:822)
at org.elasticsearch.transport.InboundPipeline.forwardFragments(InboundPipeline.java:125)
at org.elasticsearch.transport.InboundPipeline.doHandleBytes(InboundPipeline.java:97)
at org.elasticsearch.transport.InboundPipeline.handleBytes(InboundPipeline.java:62)
at org.elasticsearch.transport.netty4.Netty4MessageInboundHandler.channelRead(Netty4MessageInboundHandler.java:55)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:107)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1515)
at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1378)
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1427)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:796)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:697)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:660)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at java.lang.Thread.run(Thread.java:1575)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
:Search Relevance/RankingScoring, rescoring, rank evaluation.Scoring, rescoring, rank evaluation.>bugTeam:Search RelevanceMeta label for the Search Relevance team in ElasticsearchMeta label for the Search Relevance team in Elasticsearchpriority:highA label for assessing bug priority to be used by ES engineersA label for assessing bug priority to be used by ES engineers