Elasticsearch通配符查询

时间:2019-02-07 12:16:56

标签: elasticsearch kibana

您能帮助我理解为什么简单查询无法正常工作吗? 我有一个默认设置的简单索引:

PUT my_index/doc/1
{
  "path": "C:\\Windows\\system32\\cmd.exe"
}

为什么以下查询不返回任何内容?

GET my_index/_search
{
  "_source": "path", 
  "query": {
    "query_string": {
      "query": "(path: *\\system32\\*.exe)"
    }
  }
}

1 个答案:

答案 0 :(得分:0)

您应该像这样在查询中指定字段。

GET sample-index/_search
{
    "query": {
        "query_string" : {
            "fields" : ["path.keyword"],
            "query" : """*\\system32\\*.exe"""
        }
    }
}

我得到的输出是:

    {   "took": 13,
        "timed_out": false,
        "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0   },   
        "hits": {
        "total": 1,
        "max_score": 1,
        "hits": [
          {
            "_index": "sample-index",
            "_type": "doc",
            "_id": "1",
            "_score": 1,
            "_source": {
              "path": """C:\Windows\system32\cmd.exe"""
            }
          }
        ]
   }
 }

这里,我使用 path.keyword 时,就像您在未映射的情况下发布新字段(就像您在问题中所做的那样)时,默认情况下会为其创建关键字字段。 check here for more

额外提示:如果要检查多个字段(例如:path,path1,pathcc等),也可以在字段部分上应用正则表达式

GET sample-index/_search
{
    "query": {
        "query_string" : {
            "fields" : ["path*"],
            "query" : """*\\system32\\*.exe"""
        }
    }
}