---
acl_categories:
- '@search'
arguments:
- name: index
type: string
- name: query
type: string
- name: dialect
optional: true
since: 2.4.3
token: DIALECT
type: integer
categories:
- docs
- develop
- stack
- oss
- rs
- rc
- oss
- kubernetes
- clients
command_flags:
- readonly
complexity: O(1)
description: Returns the execution plan for a complex query
group: search
hidden: false
linkTitle: FT.EXPLAINCLI
module: Search
railroad_diagram: /images/railroad/ft.explaincli.svg
since: 1.0.0
stack_path: docs/interact/search-and-query
summary: Returns the execution plan for a complex query
syntax_fmt: "FT.EXPLAINCLI index query [DIALECT\_dialect]"
title: FT.EXPLAINCLI
---
Return the execution plan for a complex query but formatted for easier reading without using `redis-cli --raw`
[Examples](#examples)
## Required arguments
index
is index name. You must first create the index using [`FT.CREATE`]({{< relref "commands/ft.create/" >}}).
query
is query string, as if sent to FT.SEARCH`.
## Optional arguments
DIALECT {dialect_version}
is dialect version under which to execute the query. If not specified, the query executes under the default dialect version set during module initial loading or via [`FT.CONFIG SET`]({{< relref "commands/ft.config-set/" >}}) command.
{{% alert title="Note" color="warning" %}}
In the returned response, a `+` on a term is an indication of stemming.
{{% /alert %}}
## Examples
Return the execution plan for a complex query
{{< highlight bash >}}
$ redis-cli
127.0.0.1:6379> FT.EXPLAINCLI rd "(foo bar)|(hello world) @date:[100 200]|@date:[500 +inf]"
1) INTERSECT {
2) UNION {
3) INTERSECT {
4) UNION {
5) foo
6) +foo(expanded)
7) }
8) UNION {
9) bar
10) +bar(expanded)
11) }
12) }
13) INTERSECT {
14) UNION {
15) hello
16) +hello(expanded)
17) }
18) UNION {
19) world
20) +world(expanded)
21) }
22) }
23) }
24) UNION {
25) NUMERIC {100.000000 <= @date <= 200.000000}
26) NUMERIC {500.000000 <= @date <= inf}
27) }
28) }
29)
{{< / highlight >}}
## Redis Software and Redis Cloud compatibility
| Redis
Software | Redis Cloud
Flexible & Annual | Redis Cloud
Free & Fixed | Notes |
|:----------------------|:-----------------|:-----------------|:------|
| ✅ Supported | ✅ Supported | ✅ Supported | |
## Return information
{{< multitabs id="ft-explaincli-return-info"
tab1="RESP2"
tab2="RESP3" >}}
One of the following:
* [Array]({{< relref "/develop/reference/protocol-spec#arrays" >}}) of [bulk string replies]({{< relref "/develop/reference/protocol-spec#bulk-strings" >}}) containing the query execution plan in CLI format.
* [Simple error reply]({{< relref "/develop/reference/protocol-spec#simple-errors" >}}) in these cases: no such index, syntax error in query.
-tab-sep-
One of the following:
* [Array]({{< relref "/develop/reference/protocol-spec#arrays" >}}) of [bulk string replies]({{< relref "/develop/reference/protocol-spec#bulk-strings" >}}) containing the query execution plan in CLI format.
* [Simple error reply]({{< relref "/develop/reference/protocol-spec#simple-errors" >}}) in these cases: no such index, syntax error in query.
{{< /multitabs >}}
## See also
[`FT.CREATE`]({{< relref "commands/ft.create/" >}}) | [`FT.SEARCH`]({{< relref "commands/ft.search/" >}}) | [`FT.CONFIG SET`]({{< relref "commands/ft.config-set/" >}})
## Related topics
[RediSearch]({{< relref "/develop/ai/search-and-query/" >}})