无法使用 Elasticsearch SQL 查询

Posted

技术标签:

【中文标题】无法使用 Elasticsearch SQL 查询【英文标题】:Elasticsearch SQL-Query not possible 【发布时间】:2019-07-22 15:42:01 【问题描述】:

我有一个在本地运行的 ElasticSearch 实例,它运行良好。现在我想使用 SQL 查询索引。我使用 NodeJS-Client (v7) 尝试了它,通常是通过 REST-Api。 休息电话:

POST http://localhost:9200/_sql

   "body": 
       "query": "DESCRIBE indexname"
   

通过 nodeJS:

elasticClient.sql.query(
    format: "json",
    body: 
        query: "DESCRIBE indexname"
    
).then(result => 
    console.log(result);
).catch(reject => 
    console.log(reject);
);

两者都返回相同的错误:

uri [/_sql] 和方法 [POST] 的 HTTP 方法不正确,允许:[GET, HEAD, PUT, DELETE] 状态:405

有人可以帮忙吗? 干杯!

【问题讨论】:

在盆景上有同样的问题...但什么也没找到:-( 您使用的是哪个版本的 ES?我怀疑您正在针对 v6 集群运行 v7 JS 客户端 您可以使用curl 或除此客户端代码之外的其他内容运行相同的POST _sql 请求吗? (询问是因为该错误消息对于 x-pack 未安装ES-SQL 未启用 的设置很典型)并且有助于了解确切的版本ES 服务器。另外,POST 请求 _sql 的正文应该是 "query": "DESCRIBE indexname",不知道为什么你有 body @tiefenb 你能详细说明上面提出的问题吗?对某个帖子感兴趣,并为此提供赏金,但不准备帮助进行调查并不是很有成效。 【参考方案1】:

试试

GET http://localhost:9200/_sql

   "body": 
       "query": "DESCRIBE indexname"
   

【讨论】:

GET 请求不能有正文 但它是这样使用的,例如在_search端点【参考方案2】:

此问题通常是由您的 elastic/elasticsearch 模块不兼容引起的。你的ES版本是多少?尝试将您的 NodeJS 版本升级到您的 ES 版本。

在此处检查兼容性。

https://www.npmjs.com/package/@elastic/elasticsearch

【讨论】:

以上是关于无法使用 Elasticsearch SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

安装支持elasticsearch使用sql查询插件

Elasticsearch之使用RestClient实现_sql查询

Elasticsearch SQL查询 --- 2022-04-03

使用SQL语句查询Elasticsearch索引数据

java SQL查询elasticsearch?

Elasticsearch:通过 JDBC 使用 SQL 来查询索引 - DBeaver