2013-08-13 2 views
1

J'utilise ElasticSearch et je cours dans NullPointerExceptions car un champ sur lequel je base le score est NULL pour plusieurs documents.ElasticSearch - si le champ est nul, traiter comme 0?

Comment faire pour que ElasticSearch traite ces champs null comme 0?

FWIW, j'utilise la pierre précieuse de pneus et voici mon code 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 
+1

-t-null_value dans la cartographie pourrait travailler pour vous? Voir null_value dans http://www.elasticsearch.org/guide/reference/mapping/core-types/ – dadoonet

+0

c'est absolument le cas, mais cela signifie que je dois réindexer. Je le ferai si c'est la seule alternative. –

Répondre

2

J'ai découvert que je dois faire quelque chose comme ceci:

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

Qu'en est-il un script comme:

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

Est-ce que ça marche?

+0

J'ai besoin d'utiliser .empty plutôt que de vérifier null, voir ci-dessous. Merci pour l'aide en tout cas! –

Questions connexes