MVEL和Elasticsearch的布尔值脚本问题

时间:2013-09-23 16:47:03

标签: elasticsearch mvel

我有一个定义为

的字段映射

{ “top_seller”:{ “类型”: “布尔”}}

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

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

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

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

1 个答案:

答案 0 :(得分: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.

答案是:

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

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