gpt4 book ai didi

kibana - Lucene查询语言和KQL有什么区别

转载 作者:行者123 更新时间:2023-12-03 15:54:36 27 4
gpt4 key购买 nike

Kibana ver >= 7.0 默认情况下为搜索下拉菜单提供 KQL,但也支持似乎是旧的 Lucene 语法。
在尝试搜索时,它经常恼人地提示“您可能正在使用 Lucene,但选择了 KQL”。
转到建议的链接:

  • https://www.elastic.co/guide/en/kibana/7.7/lucene-query.html
  • https://www.elastic.co/guide/en/kibana/7.7/kuery-query.html

  • 我看不出任何区别。它们之间的主要区别是什么?有人可以给出突出这些差异的查询示例吗?

    最佳答案

    KQL 的当前文档和 Lucene query syntax显示了各种类型查询的语法。我将总结主要区别:
    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 , andnot .大写版本( ORANDNOT )也有效。该文档指定 andor 有更高的优先级,这是通常的运算符优先规则。
    Lucene 文档指定了以下内容:

    The preferred operators are + (this term must be present) and - (this term must not be present).


    例如, brown +fox -news指定 brown是可选的, fox必须存在,并且 news不得在场。
    Lucene 也支持 AND , ORNOT ,但仅限大写。所以,如果你尝试使用 and ,它将被视为字面词。另外,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 支持他们。

    关于kibana - Lucene查询语言和KQL有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62281279/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com