【问题标题】:how to search in kibana (lucene syntaxe) values containing "?"?如何在包含“?”的kibana(lucene语法)值中搜索?
【发布时间】:2016-03-16 17:08:01
【问题描述】:

我正在使用 ELK,我需要过滤所有具有不匹配 COUNTRY 的文档(来自 geoip)

这些属性看起来像:

'IPCOUNTRY': '??'

但我无法过滤这个特殊值...

我试过了

  • IP国家:?? => ?被评估>返回所有记录>正常情况-
  • IP国家:\?\? => 不返回任何文档...但是 lucene 文档说这应该是实现这一目标的好方法...
  • IPCOUNTRY:"??" => 不工作
  • IPCOUNTRY:'??' => 不工作

编辑:

这种情况也不行 - IPCOUNTRY:/[^A-Z]{2}/

简单但无聊的问题^^

谢谢!

【问题讨论】:

    标签: elasticsearch lucene kibana


    【解决方案1】:

    你可以试试:

     !IPCOUNTRY:"?"
     -IPCOUNTRY:"?"
     NOT IPCOUNTRY:"?"
    

    如果您有一个未分析的 IPCOUNTRY 字段,您可以执行以下操作:

     !IPCOUNTRY.raw:"??"
    

    【讨论】:

    • 嗯,实际上这些查询应该返回所有具有良好 IPCOUNTRY 字段的文档(不包括“?”)。你试过相反的吗? : +IPCOUNTRY:"?"
    • 嗯,这不正常。 +IP国家:\? +IPCOUNTRY:"\?"如果它不起作用,我无法帮助您:/
    【解决方案2】:

    这是一个弹性搜索映射问题。标点符号被删除。您需要将您的字段设置为可以保留 ? 的分析器。也许是关键字?还是未分析?

    https://github.com/elastic/kibana/issues/6561#issuecomment-197951710中提取

    【讨论】:

      【解决方案3】:

      如果您的所有字段都包含与 'IPCOUNTRY': '??' 相同的文档,那么您可以直接过滤该字段,从而将该字段排除在匹配项之外。

      要直接添加过滤器,您可以通过以下两种方式进行:-

      • 在“发现”页面中打开文本并找到该字段。单击 + 放大镜将字段添加为过滤器。

      • 在“发现”页面的左侧列出了字段。单击字段名称并选择值 portaying 为 ??将其添加为过滤器。

      【讨论】:

      • 您遇到什么错误?您能否发布更多详细信息以进行调试。
      • 它不返回任何结果。我认为这不是过滤器的问题,而是分析领域的问题
      • 您可以进入设置,点击索引名称,查看该字段是否标记为已分析。
      • 是的,该字段已被分析,我认为这是问题所在...我将尝试重新索引数据
      猜你喜欢
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多