我有一个简单的弹性SQL查询:
GET /_sql?format=txt
{
"query" :"""
DESCRIBE "index_name"
"""
}
,它工作了,输出是这样的:
column | type | mapping
-----------------------------------------------------------
column_name1 | STRUCT | object
column_name1.Id | VARCHAR | text
column_name1.Id.keyword | VARCHAR | keyword
是否有可能使用filter
或where
准备上述查询,例如:
GET /_sql?format=txt
{
"query":"""
DESCRIBE "index_name"
""",
"filter": {"terms": {"type.keyword": ["STRUCT"]}}
}
或
GET /_sql?format=txt
{
"query":"""
DESCRIBE "index_name"
WHERE "type" = 'STRUCT'
"""
}
那是不可能的。
而DESCRIBE
sql命令似乎返回表格数据,它不是一个查询,它不支持WHERE
子句或可以在SELECT
语句中使用。这实际上并不特定于Elasticsearch,但在RDBMs中也是如此。
对于Elasticsearchfilter
子句显然也是如此。这同样适用于SELECT
SQL语句,但对于DESCRIBE
或SHOW COLUMNS
,虽然不会产生错误,但它对结果没有影响。
在"真正"在SQL中,你可以通过查询information_schema.COLUMNS
来解决这个问题,但在Elasticsearch中这不是一个选项。