MVEL和Elasticsearch的布尔值脚本问题

J.T*_*.T. 4 mvel elasticsearch

我有一个字段映射定义为

{ "top_seller":{ "类型": "布尔"}}

在我的查询中,我正在尝试根据布尔值进行自定义分数查询.我把头发拉了出来.每次我运行这样的脚本:

return if(doc['top_seller'].value==true) {10} else {0}
Run Code Online (Sandbox Code Playgroud)

每一份文件都获得了真正的10次提升.只有1%的文档被设置为TRUE.我试过没有== true,= ='true'.我试过三元..DOC [ 'top_seller']值== TRUE 10:0.我尝试过1/0而不是true/false.

我甚至做了一个实验,在那里我创建了一个新的索引,并使用一个true和一个false文档进行输入.在match_all查询中,它们都获得提升,就好像它们具有真值一样.

J.T*_*.T. 19

哇,一时兴起,我正在寻找布尔的核心类型设置.

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.
Run Code Online (Sandbox Code Playgroud)

答案是:

doc['top_seller'].value == 'T' ? 10 : 0
Run Code Online (Sandbox Code Playgroud)

编辑:从5.2.x开始,我终于可以使用了doc['top_seller'] ? 10 : 0.https://www.elastic.co/guide/en/elasticsearch/reference/current/boolean.html