SQL CLI

编辑

Elasticsearch 自带一个脚本,用于在其 bin 目录中运行 SQL CLI

$ ./bin/elasticsearch-sql-cli

您可以将要连接的 Elasticsearch 实例的 URL 作为第一个参数传递

$ ./bin/elasticsearch-sql-cli https://some.server:9200

如果您的集群启用了安全性,您可以通过 username:password@host_name:port 的形式将用户名和密码传递给 SQL CLI

$ ./bin/elasticsearch-sql-cli https://sql_user:[email protected]:9200

一旦 CLI 运行起来,您可以使用 Elasticsearch 支持的任何查询

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

包含 SQL CLI 的 jar 包是一个独立的 Java 应用程序,脚本只是启动它。您可以将其移动到其他机器上,而无需在这些机器上安装 Elasticsearch。如果没有已提供的脚本文件,您可以使用类似于以下命令来启动 SQL CLI

$ ./java -jar [PATH_TO_CLI_JAR]/elasticsearch-sql-cli-[VERSION].jar https://some.server:9200

$ ./java -cp [PATH_TO_CLI_JAR]/elasticsearch-sql-cli-[VERSION].jar org.elasticsearch.xpack.sql.cli.Cli https://some.server:9200

每个 Elasticsearch 版本的 jar 包名称都会有所不同(例如 elasticsearch-sql-cli-7.3.2.jar),因此上面的示例中指定了通用的 VERSION。此外,如果不是从 SQL CLI jar 包所在的文件夹运行命令,您还需要提供完整路径。

CLI 命令

编辑

除了 SQL 查询,CLI 还可以执行一些特定的命令

allow_partial_search_results = <boolean> (默认值 false)
如果为 true,当存在分片请求超时或分片故障时,将返回部分结果。如果为 false,将返回错误且不返回任何部分结果。
sql> allow_partial_search_results = true;
allow_partial_search_results set to true
fetch_size = <number> (默认值 1000)
允许更改查询执行的提取大小。每次提取都由提取分隔符(如果已显式设置)分隔。
sql> fetch_size = 2000;
fetch size set to 2000
fetch_separator = <string> (默认值为空字符串)
允许更改提取之间的分隔符字符串。
sql> fetch_separator = "---------------------";
fetch separator set to "---------------------"
lenient = <boolean> (默认值 false)
如果为 false,Elasticsearch SQL 将对包含数组值的字段返回错误。如果为 true,Elasticsearch SQL 将返回数组中的第一个值,但不保证结果的一致性。
sql> lenient = true;
lenient set to true
info
返回服务器信息。
sql> info;
Node:mynode Cluster:elasticsearch Version:8.3
exit
关闭 CLI。
sql> exit;
Bye!
cls
清屏。
sql> cls;
logo
打印 Elastic 标志。
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