我们正在使用带有弹性搜索的 OpenDistro。在执行查询之前,它会以 DSL 格式进行编译和翻译。目前我们正在传递静态 SQL 查询,每个查询在执行前都经过编译。
举个例子 SQL:
Select * from employee where name='abc';
此查询被执行多次,每次执行的唯一名称不同。
想知道是否有一种方法可以执行如下查询:
select * from employee where name=?
并且?
在运行时被替换为参数。
这将导致只编译一次查询,并且在执行期间只会替换参数。
我查看了 opendistro 的文档,但找不到任何示例。
最后在做了更多研究之后,我找到了弹性搜索上的文档链接。我们可以执行以下格式的参数化查询:
POST /_sql?format=txt
{
"query": "SELECT * FROM employee WHERE name= ?",
"params": ["Frank Herbert"]
}