如何构建匹配查询以在路径字符串中搜索

时间:2014-09-24 06:13:26

标签: elasticsearch

我第一次面对弹性搜索。 Elasticsearch与SVN一起使用。

我需要查找特定文件夹的提交。例如,有两个分支:

  1. /branches/0.10.2 /....
  2. /branches/0.10.2-hotfix /....
  3. 此类查询

    {
      "query": {
        "bool": {
          "should": [
            {
              "indices": {
                "indices": [
                  "5439ce1e-e92f-4759-b0c0-3a753b1703b6"
                ],
                "query": {
                  "bool": {
                    "must": [
                      {
                        "range": {
                          "revision": {
                            "from": 413493,
                            "to": 415000
                          }
                        }
                      },
                      {
                        "span_first": {
                          "match": {
                            "span_term": {
                              "path": "branches"
                            }
                          },
                          "end": 1
                        }
                      },
                      {                                  _
                        "match": {                        |
                          "path": "0.10.2-hotfix"  <------|
                        }                                 |
                      }                                  _|
                    ]
                  }
                },
                "no_match_query": "none"
              }
            }
          ]
        }
      }
    }
    

    返回两个文件夹中的提交。

    如何完全找到 0.10.2 0.10.2-hotfix 的提交?

1 个答案:

答案 0 :(得分:0)

尝试使用match_phrase(这是match子类型的语法糖):

{
   "query":{
      "bool":{
         "should":[
            {
               "indices":{
                  "indices":[
                     "5439ce1e-e92f-4759-b0c0-3a753b1703b6"
                  ],
                  "query":{
                     "bool":{
                        "must":[
                           {
                              "range":{
                                 "revision":{
                                    "from":413493,
                                    "to":415000
                                 }
                              }
                           },
                           {
                              "span_first":{
                                 "match":{
                                    "span_term":{
                                       "path":"branches"
                                    }
                                 },
                                 "end":1
                              }
                           },
                           {
                              "match_phrase":{
                                 "path":"0.10.2-hotfix"
                              }
                           }
                        ]
                     }
                  },
                  "no_match_query":"none"
               }
            }
         ]
      }
   }
}