Kibana:无法使用具有空格的正则表达式进行查询

时间:2016-02-18 22:27:30

标签: regex elasticsearch kibana-4 elasticsearch-2.0

我有一个字段

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 :(

我的正则表达式出了什么问题?还有另一种方法来指定杰森之后的空间角色吗?我甚至试过

author:/Jason\sP.*/

但仍然没有结果

2 个答案:

答案 0 :(得分:2)

这是因为您的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中的author.raw字段,如下所示:

author.raw:/Jason P.*/

答案 1 :(得分:0)

它对我有用:

    author:/Jason\ P.*/

因此,反斜杠空格\s适用于我的空间,ES1.7Kibana4.1.2