Description
Elastic.Clients.Elasticsearch version: 8.1.2
Elasticsearch version: 8.8.2
.NET runtime version: .NET 6
Operating system version: Windows 10 Enterprise
Description of the problem including expected versus actual behavior:
When trying to delete indices with the wildcard with the following code:
var response = _EsClient.Indices.Delete("rules*", configureRequest =>
{
configureRequest.ExpandWildcards(new ExpandWildcard[] { ExpandWildcard.All });
});
The server returns unsuccesful response:
Invalid Elasticsearch response built from a unsuccessful (400) low level call on DELETE: /rules%2A?pretty=true&error_trace=true&expand_wildcards=Elastic.Clients.Elasticsearch.ExpandWildcard%5B%5D
obviously because the library generates incorrect query string parameter "expand_wildcards", which has to be a comma-separated string of any of "all,open,close,hidden,none" values, but instead the "Elastic.Clients.Elasticsearch.ExpandWildcard" string is added to this parameter.
Steps to reproduce:
- Write the code above.
- Run.
Expected behavior
Succesful return code (and the query string with the correct "expand_wildcards" parameter).
Provide DebugInformation
(if relevant):
Invalid Elasticsearch response built from a unsuccessful (400) low level call on DELETE: /rules%2A?pretty=true&error_trace=true&expand_wildcards=Elastic.Clients.Elasticsearch.ExpandWildcard%5B%5D
Exception: Request failed to execute. Call: Status code 400 from: DELETE /rules%2A?pretty=true&error_trace=true&expand_wildcards=Elastic.Clients.Elasticsearch.ExpandWildcard%5B%5D. ServerError: Type: illegal_argument_exception Reason: "No valid expand wildcard value [Elastic.Clients.Elasticsearch.ExpandWildcard[]]"
# Audit trail of this API call:
- [1] PingSuccess: Node: http://elkdev02:9200/ Took: 00:00:00.2743429
- [2] BadResponse: Node: http://elkdev02:9200/ Took: 00:00:00.0503984
# OriginalException: Elastic.Transport.TransportException: Request failed to execute. Call: Status code 400 from: DELETE /rules%2A?pretty=true&error_trace=true&expand_wildcards=Elastic.Clients.Elasticsearch.ExpandWildcard%5B%5D. ServerError: Type: illegal_argument_exception Reason: "No valid expand wildcard value [Elastic.Clients.Elasticsearch.ExpandWildcard[]]"
# Request:
<Request stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on TransportConfiguration to force it to be set on the response.>
# Response:
{
"error" : {
"root_cause" : [
{
"type" : "illegal_argument_exception",
"reason" : "No valid expand wildcard value [Elastic.Clients.Elasticsearch.ExpandWildcard[]]",
"stack_trace" : "org.elasticsearch.ElasticsearchException$1: No valid expand wildcard value [Elastic.Clients.Elasticsearch.ExpandWildcard[]]\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.ElasticsearchException.guessRootCauses(ElasticsearchException.java:669)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.ElasticsearchException.generateFailureXContent(ElasticsearchException.java:597)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.rest.RestResponse.build(RestResponse.java:176)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.rest.RestResponse.<init>(RestResponse.java:124)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.rest.RestResponse.<init>(RestResponse.java:103)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:412)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.rest.RestController.tryAllHandlers(RestController.java:539)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:311)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.http.AbstractHttpServerTransport.dispatchRequest(AbstractHttpServerTransport.java:381)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.http.AbstractHttpServerTransport.handleIncomingRequest(AbstractHttpServerTransport.java:477)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.http.AbstractHttpServerTransport.incomingRequest(AbstractHttpServerTransport.java:354)\n\tat org.elasticsearch.transport.netty4@8.8.2/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.handlePipelinedRequest(Netty4HttpPipeliningHandler.java:128)\n\tat org.elasticsearch.transport.netty4@8.8.2/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.channelRead(Netty4HttpPipeliningHandler.java:118)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)\n\tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:689)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:652)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)\n\tat io.netty.common@4.1.89.Final/io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)\n\tat io.netty.common@4.1.89.Final/io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n\tat java.base/java.lang.Thread.run(Thread.java:1623)\nCaused by: java.lang.IllegalArgumentException: No valid expand wildcard value [Elastic.Clients.Elasticsearch.ExpandWildcard[]]\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.action.support.IndicesOptions$WildcardStates.updateSetForValue(IndicesOptions.java:83)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.action.support.IndicesOptions$WildcardStates.parseParameter(IndicesOptions.java:56)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.action.support.IndicesOptions.fromParameters(IndicesOptions.java:420)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.action.support.IndicesOptions.fromRequest(IndicesOptions.java:375)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.rest.action.admin.indices.RestDeleteIndexAction.prepareRequest(RestDeleteIndexAction.java:44)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:80)\n\tat org.elasticsearch.security@8.8.2/org.elasticsearch.xpack.security.rest.SecurityRestFilter.doHandleRequest(SecurityRestFilter.java:98)\n\tat org.elasticsearch.security@8.8.2/org.elasticsearch.xpack.security.rest.SecurityRestFilter.handleRequest(SecurityRestFilter.java:74)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:410)\n\t... 44 more\n"
}
],
"type" : "illegal_argument_exception",
"reason" : "No valid expand wildcard value [Elastic.Clients.Elasticsearch.ExpandWildcard[]]",
"stack_trace" : "java.lang.IllegalArgumentException: No valid expand wildcard value [Elastic.Clients.Elasticsearch.ExpandWildcard[]]\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.action.support.IndicesOptions$WildcardStates.updateSetForValue(IndicesOptions.java:83)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.action.support.IndicesOptions$WildcardStates.parseParameter(IndicesOptions.java:56)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.action.support.IndicesOptions.fromParameters(IndicesOptions.java:420)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.action.support.IndicesOptions.fromRequest(IndicesOptions.java:375)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.rest.action.admin.indices.RestDeleteIndexAction.prepareRequest(RestDeleteIndexAction.java:44)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:80)\n\tat org.elasticsearch.security@8.8.2/org.elasticsearch.xpack.security.rest.SecurityRestFilter.doHandleRequest(SecurityRestFilter.java:98)\n\tat org.elasticsearch.security@8.8.2/org.elasticsearch.xpack.security.rest.SecurityRestFilter.handleRequest(SecurityRestFilter.java:74)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:410)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.rest.RestController.tryAllHandlers(RestController.java:539)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:311)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.http.AbstractHttpServerTransport.dispatchRequest(AbstractHttpServerTransport.java:381)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.http.AbstractHttpServerTransport.handleIncomingRequest(AbstractHttpServerTransport.java:477)\n\tat org.elasticsearch.server@8.8.2/org.elasticsearch.http.AbstractHttpServerTransport.incomingRequest(AbstractHttpServerTransport.java:354)\n\tat org.elasticsearch.transport.netty4@8.8.2/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.handlePipelinedRequest(Netty4HttpPipeliningHandler.java:128)\n\tat org.elasticsearch.transport.netty4@8.8.2/org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.channelRead(Netty4HttpPipeliningHandler.java:118)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)\n\tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.codec@4.1.89.Final/io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:689)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:652)\n\tat io.netty.transport@4.1.89.Final/io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)\n\tat io.netty.common@4.1.89.Final/io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)\n\tat io.netty.common@4.1.89.Final/io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n\tat java.base/java.lang.Thread.run(Thread.java:1623)\n"
},
"status" : 400
}
# TCP states:
TimeWait: 37
Established: 97
CloseWait: 2
# ThreadPool statistics:
Worker:
Busy: 0
Free: 32767
Min: 4
Max: 32767
IOCP:
Busy: 0
Free: 1000
Min: 4
Max: 1000