Skip to main content

Quickwit 查询语言介绍

Quickwit 允许您使用一种简单的查询语言在已索引的文档上进行搜索。下面是一个快速概述。

子句

这种语言的主要概念是子句,它表示一个可以针对文档进行测试的简单条件。

查询字段

一个子句作用于您的文档的字段上。它的语法如下:

field:condition

例如,当搜索包含 tantivyapp_name 字段的文档时,您可以写出如下子句:

app_name:tantivy

在许多情况下,字段名称可以省略,这时 Quickwit 会使用为索引配置的 default_search_fields

条件子句速查表

Quickwit 支持多种类型的子句来表达不同种类的条件。这里有一个快速概述:

typesyntaxexamplesdescriptiondefault_search_field
termfield:tokenapp_name:tantivy
process_id:1234
word
term 子句检测字段中的某个值是否存在yes
term prefixfield:prefix*app_name:tant*
quick*
term 子句检测字段中的某个令牌是否以提供的值开头yes
term setfield:IN [token token ..]severity:IN [error warn]term 集合子句检测字段中的令牌集合中是否包含任何一个提供的值yes
phrasefield:"sequence of tokens"full_name:"john doe"phrase 子句检测提供的令牌序列是否存在于字段中yes
phrase prefixfield:"sequence of tokens"*title:"how to m"*phrase 前缀子句检测一个令牌序列是否存在,其中最后一个令牌的匹配方式与前缀子句相同yes
all**匹配所有子句将匹配所有文档no
existfield:*error:*存在子句检测字段是否存在任何值,只有当字段存在时才会匹配no
rangefield:boundsduration:[0 TO 1000}
last_name:[banner TO miller]
range 子句检测字段中的某个令牌是否在提供的范围内no

查询

结合查询

可以使用布尔运算符 ANDOR 来组合子句,从而创建更复杂的搜索表达式。 AND 查询仅在运算符两侧的条件都满足时才匹配。

type:rose AND color:red

OR 查询在运算符两侧任一条件或两个条件都满足时匹配。

weekday:6 OR weekday:7

如果没有提供运算符,默认隐含为 AND

type:violet color:blue

组合查询

可以通过使用括号来组合子句构建复杂的表达式。

(type:rose AND color:red) OR (type:violet AND color:blue)

当没有使用括号时,AND 的优先级高于 OR,这意味着下面的查询等同于上面的查询。

type:rose AND color:red OR type:violet AND color:blue

否定查询

可以通过使用运算符 NOT 或者在查询前加上破折号 - 来否定一个表达式。

NOT- 的优先级高于其他运算符,因此 -a AND b 意味着 (-a) AND b,而不是 -(a AND b)

NOT severity:debug

or

type:proposal -(status:rejected OR status:pending)

更深入了解

如果您想了解更多关于查询语言的内容,请参阅 查询语言参考