如何通过一键生成 App 加速企业数字化转型?
1597
2022-12-01
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~