【问题标题】:Kibana : Cannot query with regex having spaceKibana:无法使用有空格的正则表达式进行查询
【发布时间】:2016-02-18 22:27:30
【问题描述】:

我有一个字段

author
Jason Pete
Jason Paul
Mike Yard
Jason Voorhies

在 kibana 4.4 中我查询为

author:/Jason.*/

所以我得到所有记录

Jason Pete
Jason Paul
Jason Voorhies

好的,现在我想做

author:/Jason P.*/

我期待

Jason Pete
Jason Paul

但我明白了

No Records found :(

我的正则表达式有什么问题?有没有另一种方法可以在 Jason 之后指定空格字符?我什至尝试过

author:/Jason\sP.*/

但还是没有结果

【问题讨论】:

标签: regex elasticsearch kibana-4 elasticsearch-2.0


【解决方案1】:

这是因为您的author 字段可能已被分析,因此值Jason Pete 被标记为两个标记jasonpete。因此,不可能同时查询这两个值。

如果您想改变这种行为,我建议您在 author 字段之外创建一个多字段,并带有一个 not_analyzed 子字段,如下所示:

curl -XPUT localhost:9200/my_index/_mapping/my_type -d '{
    "my_type": {
      "properties": {
        "author": {
          "type": "string",
          "fields": {                  <--- add this section to author your field
            "raw": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
}'

一旦您的映射更新(确保将my_indexmy_type 替换为您拥有的任何索引和映射类型名称),您需要重新索引您的数据,然后您就可以查询@ Kibana 中的 987654330@ 字段如下:

author.raw:/Jason P.*/

【讨论】:

  • 感谢@Val,但映射中没有分析我的字段。
  • 你能用curl -XGET localhost:9200/my_index/_mapping/my_type展示你的映射吗
  • 虽然 OP 没有被分析,因此这个答案与那个不太相关,恕我直言,这是大多数搜索者在进入这个 SO 线程时需要的 解决方案,所以点赞
【解决方案2】:

它确实对我有用:

    author:/Jason\ P.*/

所以反斜杠空格 \s 在我的情况下适用于空格,ES1.7Kibana4.1.2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    相关资源
    最近更新 更多