2013-06-26 29 views
5

我想用一個腳本來做到以下幾點:在elasticsearch腳本類型轉換

{ 
    "query": { 
    "match_all": {} 
}, 
    "facets": { 
    "user_facet": { 
     "terms": { 
     "field": "user_id", 
     "script": "term + \"_\" + _source.code" 
     } 
    } 
    } 
} 

這類似於在這個問題給出了答案: elastic search double facet

我唯一的問題是我的user_id和code字段是很長的類型,而不是字符串。有沒有辦法讓它們成爲字符串,以便它們可以與腳本結合使用?

我得到的特定錯誤是:

nested: ClassCastException[java.lang.String cannot be cast to java.lang.Number]; 
+0

我從你的例子沒有看到一個長的user_id如何匹配你在腳本中計算的術語,這是一個刺痛,即使你轉換它。我肯定錯過了什麼。 – Phil

+0

一個想法嘗試...也許使用'doc ['user_id']'爲該字段將工作? – Phil

+0

您也可以在mvel腳本中使用Java。然後我將它們轉換爲使用java的字符串;) – javanna

回答

3

這聽起來有些可笑,但我有同樣的問題,我固定它(一個非常類似的問題)的方法就是刪除了「場」規範,這樣它看起來像這樣:

{ 
    "query": { 
    "match_all": {} 
}, 
    "facets": { 
    "user_facet": { 
     "terms": { 
     "script": "term + \"_\" + _source.code" 
     } 
    } 
    } 
} 

我認爲這是試圖將輸出轉換‘腳本’執行回字段的類型,引起類轉換異常。