ES SQL语法虽然支持like语句,但是like并不是使用全文搜索算法,ES SQL语句中主要通过MATCH函数实现全文搜索。
1.MATCH函数
语法:
MATCH(
field_exp,
constant_exp
[, options])
说明:
- field_exp - 需要搜索的字段
- constant_exp - 需要搜索的关键词
- options - 可选参数
2.全文搜索例子
POST /_sql?format=txt
{
"query": "SELECT author, name FROM library WHERE MATCH(author, 'frank')"
}
说明:
查询library索引中author字段,匹配frank关键词的文档。
返回结果:
author | name
---------------+---------------
Frank Herbert |Dune
3.SQL相关度排序
通过SCORE()函数实现相关度排序
例子:
POST /_sql?format=txt
{
"query": "SELECT author, name FROM library WHERE MATCH(author, 'frank') ORDER BY SCORE()"
}
也可以将相关度分数返回
例子:
SELECT SCORE(), * FROM library WHERE MATCH(name, 'dune') ORDER BY SCORE() DESC;