我有一个定义为
的字段映射{ “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查询中,它们都获得提升,就好像它们具有真值一样。
答案 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