2013-09-23 53 views
4

我有一個字段映射定義爲布爾值腳本問題與MVEL和Elasticsearch

{「top_seller」:{「類型」:「布爾」}}

在我的詢問,我想根據布爾值進行自定義分數查詢。我正在拉我的頭髮。每次我運行這樣的腳本時:

return if(doc['top_seller'].value==true) {10} else {0} 

每一個文檔都會得到真正的10次提升。我的文檔中只有1%被設置爲TRUE。我已經嘗試沒有==真,與=='真'。我已經嘗試了三元。 。DOC [ 'top_seller']值== TRUE 10:0。我試過1/0而不是真/假。

我甚至做了一個實驗,我創建了一個新的索引,並輸入了一個真實的和單個的假文檔。在match_all查詢中,他們都獲得了提升,就好像他們具有真正的價值。

回答

20

哇,一時興起,我正在尋找布爾型的核心類型設置。

The boolean type Maps to the JSON boolean type. It ends up storing within the index either T or F, with automatic translation to true and false respectively. 

答案是:

doc['top_seller'].value == 'T' ? 10 : 0 

編輯:爲5.2.x的,我終於能夠使用doc['top_seller'] ? 10 : 0https://www.elastic.co/guide/en/elasticsearch/reference/current/boolean.html

+0

非常感謝你我真的很生氣我的數據真/假值 –