无法使用 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之使用RestClient实现_sql查询