KQL和Lucene的区别

网友投稿 1569 2022-12-01

KQL和Lucene的区别

KQL和Lucene的区别

简介

说明

本文介绍KQL和Lucene的区别。

KQL和Lucene都是Kibana支持的查询语言,这两种语言差别不大。

官网网址

KQL语法:​​query syntax | Kibana Guide [7.7] | Elastic​​

1.下拉建议

KQL 可以在您键入查询时获取有关字段、值和运算符的建议,而在使用 Lucene 时则不存在此功能。 (此功能需要“基本层”或更高级别。)

2. 范围查询

查找count大于或等于 5

KQL 语法: count:>=5

Lucene 语法: count:[5 TO *]

查找account_number大于或等于 100,但小于 200

KQL 语法: account_number:>=100 and account_number:<200

Lucene 语法: account_number:[100 TO 200}

3. 操作符

KQL 文档

bool 运算符 or , and和 not .大写版本( OR 、 AND 和 NOT )也有效。该文档指定 and比 or 有更高的优先级,这是通常的运算符优先规则。

Lucene 文档

Lucene 也支持 AND , OR和 NOT ,但仅限大写。所以,如果你尝试使用 and ,它将被视为字面词。

Lucene 推荐使用 + (条目必须存在) 和- (条目不能存在)。例如:brown +fox -news指定 brown是可选的,fox必须存在,并且 news不得存在。

Lucene 支持 && , ||和 ! 。但是,文档指出所有这些运算符都不遵守通常的运算符优先级规则,并建议在同时使用多个运算符时使用括号。

4. 存在查询

查找包含字段 response 的文档

KQL 语法: response:*

Lucene 语法:_exists_:response ( response:* 也适用于 Lucene,但如果该字段的值为空字符串时的行为可能会有所不同)。

5. 通配符

通配符的种类

KQL:文档只提到了 *通配符,匹配零个或多个字符。没有提到 ?。

Lucene:*通配符,匹配零个或多个字符;?匹配单个字符。

通配符的转义

KQL:将通配符用作通配符时从不需要转义通配符,因此我们可以使用类似 book.*:(quick or brown). 的内容。

Lucene:通配符作为字段名的一部分似乎需要转义。给出的例子是 book.\*:(quick OR brown) .

6. 嵌套查询

根据文档,嵌套查询的语法有所不同。

7. Lucene 的额外功能

KQL 文档没有提到正则表达式、模糊搜索和 boosting;所以它们可能不受支持。 Lucene 支持他们。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:P1897 电梯里的爱情 [洛谷]
下一篇:SpringACK对RabbitMQ消息的确认(消费)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~