【问题标题】:Kibana query exact matchKibana 查询完全匹配
【发布时间】:2014-11-01 11:09:47
【问题描述】:

我想知道如何查询字段以完全匹配字符串。

我实际上是在尝试这样查询:

url : "http://www.domain_name.com"

返回所有以http://www.domain_name.com开头的字符串。

【问题讨论】:

    标签: regex lucene elasticsearch kibana


    【解决方案1】:

    我有一个类似的问题,我发现“.raw”修复了它 - 在你的例子中,试试

    url.raw : "http://www.domain_name.com"
    

    【讨论】:

    • 非常感谢,使用 .raw 我们可以访问未过滤/未标记的字符串!
    • 在较新版本的 ES(5.x, 6.x) 中,您应该使用 url.keyword 代替,因为它们已更改为新的关键字类型。
    【解决方案2】:

    只是让@dezhi 的评论更加可见。

    in newer version of ES(5.x, 6.x), 
    you should use `url.keyword` instead, 
    as they have changed to a new keyword type.
    

    因此,它会是:

    url.keyword : "http://www.domain_name.com"
    

    【讨论】:

    • 谢谢 :) 救星!
    【解决方案3】:

    现成不支持精确值。

    http://blogs.perl.org/users/mark_leighton_fisher/2012/01/stupid-lucene-tricks-exact-match-starts-with-ends-with.html

    开箱即用,Lucene 不提供精确的字段匹配,例如匹配“Acer Negundo Ab”,仅匹配“Acer Negundo Ab”(不包括“Acer Negundo Ab IgG”)。Lucene 也不提供“Starts With”或“Ends” With" 功能。幸运的是,有一些解决方法。

    【讨论】:

      【解决方案4】:
      "Cannot change the info of a user"
      

      要搜索精确的字符串,您需要将字符串包装成双精度 引号。不带引号,示例中的搜索 将匹配包含以下单词之一的任何文档: “不能”或“更改”或“该”或“信息”或“一个”或“用户”。

      Kibana v6.5

      【讨论】:

      • 你的答案非常正确,除了一件小事。 “无法更改用户的信息”甚至会获取一个文档,其中文本类似于:“未经授权的用户无法更改用户的信息”,因此“”中的任何内容都匹配为完整的短语。我猜对于 url.raw 或 url.keyword 的上述答案完全匹配更正确。
      【解决方案5】:

      根据您的查询,看起来不错。

      为了匹配,语法如下:

      fieldname : string

      要匹配子字符串,请使用通配符 (*),

      语法:

      fieldname : *string*

      此外,无论您应用什么查询;该查询是否是您的特定输出组件的Query Criteria 的一部分。

      因此,我建议您检查是否在您的搜索中应用了 wild card

      【讨论】:

      • 感谢 Nirdesh 的回答,但不幸的是,这里的实际功能存在一些不规则之处。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 2022-01-06
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      相关资源
      最近更新 更多