2017-02-10 56 views
1

問題:與lowercase_expanded_terms Elasticsearch正則表達式過濾器語法

我想執行匹配文本查詢,然後對一些領域的正則表達式過濾器。 對於我的生活,我找不出正確的語法一個正則表達式過濾器。

(我用使用Node.js的客戶端執行查詢)


說明:

land場在我的文件設置爲index:'not_analyzed'。我已經驗證了查詢的工作原理沒有過濾條款。我已經驗證,有在土地領域的項目與模式,比如'T2-R3'。我從閱讀,這是必要的,包括lowercase_expanded_terms: false參數的查詢,因爲正則表達式擴展的默認行爲是隻有小寫的文檔理解。

這有什麼錯我的查詢:

es.search({ 
    index: index_list, 
    type: 'page', 
    body: { 
     query: { 
      bool: { 
       must: [ 
        {match: { _all: { 
          "query": search_text, 
          "operator": "and" 
          }}}, 
       ], 
       filter: [ 
        {"regexp": {land: 'T*', 
         lowercase_expanded_terms: false}} 
       ] 
      } 
     }, 
     aggs: { 
      "top_tag_hits":{ 
       terms: { 
        field: "agg_index", 
        size: agg_size 
       }, 
       aggs: { 
        "hits":{ 
         top_hits: { 
          size: agg_size 
         } 
        } 
       } 
      } 
     }, 
    }, 
    explain: true, 
    size: result_size, 
}).then(function (resp) { 
    var hits = resp.hits.hits; 
    var aggs = resp.aggregations; 
    response.send(aggs); 
}, function (err) { 
    console.trace(err.message); 
    response.send(err.message); 
}); 

我想到這可能是一個愚蠢的語法錯誤。但也有珍貴稀少elasticsearch例子四周,沒有,我已經發現,同時使用正則表達式過濾器,並設置lowercase_expanded_terms

Elasticsearch版本2.3

回答

1

在您的查詢,T*正則表達式,不會在值相匹配你的榜樣,T2-R3

*是運營商的「匹配前面的令牌0次以上」,所以在land字段只包含T的

希望那是它只會匹配文件唯一的問題

+0

絕對應該已經閱讀'T. *'在原來的問題。原來我的問題比較複雜。將更新問題 – GrantD71