elasticsearch/docs/reference/sql/endpoints/cli.asciidoc
Luigi Dell'Aquila bdebb25b60
Implement support for partial search results in SQL CLI (#86982)
Add support for

   allow_partial_search_results = true/false

command in SQL CLI.

If true, returns partial results if there are shard request timeouts or shard failures.
If false, returns an error with no partial results.
2022-05-26 16:59:37 +02:00

201 lines
6.2 KiB
Text

[role="xpack"]
[[sql-cli]]
== SQL CLI
Elasticsearch ships with a script to run the SQL CLI in its `bin` directory:
[source,bash]
--------------------------------------------------
$ ./bin/elasticsearch-sql-cli
--------------------------------------------------
You can pass the URL of the Elasticsearch instance to connect to as
the first parameter:
[source,bash]
--------------------------------------------------
$ ./bin/elasticsearch-sql-cli https://some.server:9200
--------------------------------------------------
If security is enabled on your cluster, you can pass the username
and password in the form `username:password@host_name:port`
to the SQL CLI:
[source,bash]
--------------------------------------------------
$ ./bin/elasticsearch-sql-cli https://sql_user:strongpassword@some.server:9200
--------------------------------------------------
Once the CLI is running you can use any <<sql-spec,query>> that
Elasticsearch supports:
[source,sqlcli]
--------------------------------------------------
sql> SELECT * FROM library WHERE page_count > 500 ORDER BY page_count DESC;
author | name | page_count | release_date
-----------------+--------------------+---------------+---------------
Peter F. Hamilton|Pandora's Star |768 |1078185600000
Vernor Vinge |A Fire Upon the Deep|613 |707356800000
Frank Herbert |Dune |604 |-144720000000
Alastair Reynolds|Revelation Space |585 |953078400000
James S.A. Corey |Leviathan Wakes |561 |1306972800000
--------------------------------------------------
// TODO it'd be lovely to be able to assert that this is correct but
// that is probably more work then it is worth right now.
The jar containing the SQL CLI is a stand alone Java application and
the scripts just launch it. You can move it around to other machines
without having to install Elasticsearch on them. Without the already
provided script files, you can use a command similar to the following
to start the SQL CLI:
[source,bash]
--------------------------------------------------
$ ./java -jar [PATH_TO_CLI_JAR]/elasticsearch-sql-cli-[VERSION].jar https://some.server:9200
--------------------------------------------------
or
[source,bash]
--------------------------------------------------
$ ./java -cp [PATH_TO_CLI_JAR]/elasticsearch-sql-cli-[VERSION].jar org.elasticsearch.xpack.sql.cli.Cli https://some.server:9200
--------------------------------------------------
The jar name will be different for each Elasticsearch version (for example `elasticsearch-sql-cli-7.3.2.jar`),
thus the generic `VERSION` specified in the example above. Furthermore,
if not running the command from the folder where the SQL CLI jar resides,
you'd have to provide the full path, as well.
[[cli-commands]]
[discrete]
=== CLI commands
Apart from SQL queries, CLI can also execute some specific commands:
`allow_partial_search_results = <boolean>` (default `false`)::
If `true`, returns partial results if there are shard request timeouts or
<<shard-failures,shard failures>>. If `false`, returns an error with
no partial results.
[source,sqlcli]
--------------------------------------------------
sql> allow_partial_search_results = true;
allow_partial_search_results set to true
--------------------------------------------------
`fetch_size = <number>` (default `1000`)::
Allows to change the size of fetches for query execution.
Each fetch is delimited by fetch separator (if explicitly set).
[source,sqlcli]
--------------------------------------------------
sql> fetch_size = 2000;
fetch size set to 2000
--------------------------------------------------
`fetch_separator = <string>` (empty string by default)::
Allows to change the separator string between fetches.
[source,sqlcli]
--------------------------------------------------
sql> fetch_separator = "---------------------";
fetch separator set to "---------------------"
--------------------------------------------------
`lenient = <boolean>` (default `false`)::
If `false`, {es-sql} returns an error for fields containing <<array,array values>>.
If `true`, {es-sql} returns the first value from the array with no guarantee of consistent results.
[source,sqlcli]
--------------------------------------------------
sql> lenient = true;
lenient set to true
--------------------------------------------------
`info`::
Returns server information.
[source,sqlcli]
--------------------------------------------------
sql> info;
Node:mynode Cluster:elasticsearch Version:8.3
--------------------------------------------------
`exit`::
Closes the CLI.
[source,sqlcli]
--------------------------------------------------
sql> exit;
Bye!
--------------------------------------------------
`cls`::
Clears the screen.
[source,sqlcli]
--------------------------------------------------
sql> cls;
--------------------------------------------------
`logo`::
Prints Elastic logo.
[source,sqlcli]
--------------------------------------------------
sql> logo;
asticElasticE
ElasticE sticEla
sticEl ticEl Elast
lasti Elasti tic
cEl ast icE
icE as cEl
icE as cEl
icEla las El
sticElasticElast icElas
las last ticElast
El asti asti stic
El asticEla Elas icE
El Elas cElasticE ticEl cE
Ela ticEl ticElasti cE
las astic last icE
sticElas asti stic
icEl sticElasticElast
icE sticE ticEla
icE sti cEla
icEl sti Ela
cEl sti cEl
Ela astic ticE
asti ElasticElasti
ticElasti lasticElas
ElasticElast
SQL
8.3.0
--------------------------------------------------