Match 函数在底层利用 match query。这意味着当利用多个术语时,它将创建一个布尔查询,并利用 OR 作为组合它们的默认运算符。
Match 函数目前有一些限制:
它不提供指定参数的方法。它将利用匹配查询的默认值。
它只能在 WHERE 子句中利用。
它不能在 STATS 或 LIMIT 下令之后利用
8.17 版本存在以下限制:
只有 text 或 keyword 字段可以与 MATCH 一起利用。
MATCH 可以与其他条件组相助为 AND 表达式的一部分,但不能作为 OR 表达式的一部分。可以利用 WHERE match(message, "connection lost") AND length(message) > 10,但不能利用 WHERE match(message, "connection lost") OR length(message) > 10。
我们正在积极努力解除这些限制,以便你可以充实利用 MATCH 的全部功能。你可以查看 Elastic Cloud Serverless 中的进度,它会不断更新我们的新工作。以下是针对上述限制的 serverless 当前状态:
MATCH 险些可以与任何字段类型一起利用,并自动将字符串值转换为任何类型。
当条件的全部元素都是全文函数时,MATCH 和全文函数允许利用 OR 条件
查看最新文档以相识无服务器上 MATCH 的状态。
匹配运算符
匹配运算符 ( 相当于上面的匹配函数,但它提供了更简便的语法:
FROM logs
| WHERE message:"connection lost"
复制代码
利用 match 运算符更方便,但你可以利用对你更有意义的任何运算符。
match 运算符具有与 match 函数相同的限制。
查询字符串函数
查询字符串函数 (QSTR) 利用查询字符串语法对一个或多个字段实行复杂查询:
FROM logs
| WHERE qstr("message: 'connection lost' AND tags:'production'")
复制代码
查询字符串语法允许指定强盛的全文选项和操作,包罗含糊搜刮、邻近搜刮(proximity searches)和布尔运算符(boolean operators)的利用。有关更多详细信息,请参阅文档。
查询字符串是一个非常强盛的工具,但目前有一些限制,与 MATCH 函数非常相似:
与 MATCH 函数类似,我们对 OR 条件有一个限制。QSTR 可以作为 AND 表达式的一部分与其他条件组合,但不能作为 OR 表达式的一部分。可以利用 WHERE qstr("message: 'connection lost'") AND length(message) > 10,但不能利用 WHERE qstr("message: 'connection lost'") OR length(message) > 10。
当条件的全部元素都是全文函数时,Elastic Cloud Serverless 允许利用 OR 条件。请查看最新文档,相识 QSTR 在 Serverless 上的状态。