跳到主要内容

ESQUERY

描述

ESQUERY(<field>, <query_dsl>) 函数用于将无法用 SQL 表达的查询下推到 Elasticsearch 进行过滤。
第一个参数 <field> 用于关联索引,第二个参数 <query_dsl> 为 Elasticsearch 的基本 Query DSL 的 JSON 表达式,
JSON 需使用 {} 包裹,并且必须包含且仅包含一个根键,例如 match_phrasegeo_shapebool 等。

语法

ESQUERY(<field>, <query_dsl>)

参数

参数说明
<field>需要查询的字段,用于关联 Elasticsearch 索引。
<query_dsl>Elasticsearch Query DSL 的 JSON 表达式,需使用 {} 包裹,并且根键必须唯一(如 match_phrasegeo_shapebool)。

返回值

返回一个布尔值,表示该文档是否匹配提供的 Elasticsearch 查询 DSL。

举例

-- match_phrase 查询:
SELECT * FROM es_table
WHERE ESQUERY(k4, '{
"match_phrase": {
"k4": "doris on es"
}
}');
-- geo_shape 查询:
SELECT * FROM es_table
WHERE ESQUERY(k4, '{
"geo_shape": {
"location": {
"shape": {
"type": "envelope",
"coordinates": [
[13, 53],
[14, 52]
]
},
"relation": "within"
}
}
}');