sql - 执行 LOWER() 时,ElasticSearch 查询导致错误“input_mismatch_exception”
问题描述
我正在研究搜索功能,我需要执行一个简单的查询来检查是否有任何匹配转换为小写的搜索字符串。简单来说,用户搜索“SiteName”,然后我查询是否有任何匹配“sitename”的内容。
但是,当我在查询中使用 LOWER() 函数时出现错误。
这是我尝试过的:
POST /_sql?format=json
{
"query":"SELECT siteid, sitename FROM zones WHERE
sitename LIKE LOWER('SiteFirst') ", "fetch_size" : 90
}
我得到这个错误:
{
"error" : {
"root_cause" : [
{
"type" : "parsing_exception",
"reason" : "line 1:70: mismatched input 'LOWER' expecting {'?',
STRING}"
}
],
"type" : "parsing_exception",
"reason" : "line 1:70: mismatched input 'LOWER' expecting {'?', STRING}",
"caused_by" : {
"type" : "input_mismatch_exception",
"reason" : null
}
},
"status" : 400
}
同样的查询在没有 LOWER() 的情况下也可以工作。
有关如何解决此错误的任何建议?谢谢!
解决方案
我很确定在 ES SQLLOWER
中调用了。LCASE
更重要的是,LIKE
仅适用于精确字段,而且建议使用MATCH
而不是LIKE
.
所以试试这个:
POST /_sql?format=json
{
"query": "SELECT siteid, sitename FROM zones WHERE MATCH(sitename, 'SiteFirst')",
"fetch_size": 90
}
推荐阅读
- php - Laravel:单击html按钮时显示具有相同URL的列表
- mongodb - 如何使用 id 显示名称但使用 2 个集合 MongoDb 中的数据?
- rest - 如何从 HERE REST API 中的航点获取总距离和时间
- angular - 解析器与 Redux
- c# - CefSharp : 根据文本框在页面上的位置向上滚动页面 (CefSharp.WinForms.ChromiumWebBrowser)
- php - 如何计算每个集群的变异系数值?- PHP MYSQL
- salt-stack - 处理 saltstack 中状态文件和支柱文件的相对路径
- css - 完整的背景图片,忽略网站结构?
- c# - user32.dll SendInput 发送大写重音字符
- react-native - 访问其他组件中的状态数据