2013-08-13 2 views
1

Я использую ElasticSearch и нахожусь в NullPointerExceptions, потому что поле, на котором я основываю счет, равно NULL для нескольких документов.ElasticSearch - если поле имеет значение null, обрабатывается как 0?

Как сделать ElasticSearch обрабатывать эти пустые поля как 0?

FWIW, я использую камень шин, и это мой рубин код:

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

ли null_value в отображении может работать для вас? См. Null_value в http://www.elasticsearch.org/guide/reference/mapping/core-types/ – dadoonet

+0

, но это означает, что я должен переиндексировать его. Я сделаю это, если это единственная альтернатива. –

ответ

2

я обнаружил, что мне нужно сделать что-то вроде этого:

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

насчет сценария, как:

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

ли работа?

+0

Мне нужно использовать .путь, а не проверять значение null, см. Ниже. Спасибо за помощь, хотя! –

Смежные вопросы