2015-09-01 38 views
0

我有一些數據與elasticsearch 1.5.2進行了彙總,當我在city等字段上進行術語聚合時,存儲桶不匹配字段中的完整字符串。例如)如果城市是聖路易斯,那麼一個桶將是St.,另一個是Louis。有誰知道如何確保它在聚合時進入St. Louis桶?如何獲得術語聚合以匹配總字符串?

注:這可能是從被分析的數據,我敢肯定休息了字符串比較和搜索等

回答

2

你是正確的,當造成的。所以,你只需要使用這個映射到您的city字段映射爲not_analyzed字符串:

{ 
    "your_type" : { 
    "properties" : { 
     "city" : { 
     "type" : "string", 
     "index" : "analyzed", 
     "fields" : { 
      "raw" : {"type" : "string", "index" : "not_analyzed"} 
     } 
     } 
    } 
    } 
} 

然後你就可以簡單地在city.raw場運行聚合(其中包含未分析的價值,即St. Louis)代替city,其被分析並將內容分解成多個標記(即,stlouis)。

如果你事先知道,你永遠不會需要分析的領域,你可以簡單地存儲這樣的not_analyzed場(即無需對fields部分宣佈了多場):

{ 
    "your_type" : { 
    "properties" : { 
     "city" : { 
     "type" : "string", 
     "index" : "not_analyzed" 
     } 
    } 
    } 
} 
相關問題