ElasticSearch - 如果field为null,则视为0?

时间:2013-08-13 02:27:13

标签: ruby lucene elasticsearch

我正在使用ElasticSearch,并且正在运行NullPointerExceptions,因为基于得分的字段对于多个文档来说是NULL。

如何让ElasticSearch将这些空字段视为0?

FWIW,我正在使用Tire gem,这是我的Ruby代码:

s = Tire.search "articles" do
            query do
                custom_score :script => "_score < 2 ? 0 : doc['num_likes'].value" do
                   match fields, keyword
                end     
            end               
end

2 个答案:

答案 0 :(得分:2)

我发现我需要做这样的事情:

_score < 2 ? 0 : (doc['num_likes'].empty ? 0 : doc['num_likes'].value)

答案 1 :(得分:1)

如下脚本:

"_score < 2 ? 0 : (doc['num_likes'] == null ? 0 : doc['num_likes'].value)"

有效吗?