4

我有一个字段映射定义为

{"top_seller":{"type":"boolean"}}

在我的查询中,我试图根据布尔值进行自定义分数查询。我正在拔头发。每次我运行这样的脚本时:

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

每个文档都获得真正的 10 提升。我的文档中只有 1% 设置为 TRUE。我试过不带 ==true,带 =='true'。我试过三元。doc['top_seller'].value==true?10:0. 我试过 1/0 而不是真/假。

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

4

1 回答 1

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

于 2013-09-23T17:19:59.050 回答