Problème d’import Elasticsearch sur Heroku

Il y a quelques temps, lors de l’import de données dans un nouveau projet sur Heroku, nous avons été confronté à une erreur un peu étrange.

Au moment de lancer l’import, nous obtenions le résultat suivant :

$ heroku run bundle exec rake environment elasticsearch:import:all
[IMPORT] Processing model: Car...
[IMPORT] 103 errors occurred
[IMPORT] Done

Pas de détail, juste le nombre d’erreurs.

Pour en savoir plus nous avons activé le log de debug :

$ heroku run bundle exec rake environment elasticsearch:import:all DEBUG=1
[IMPORT] Processing model: Car...
   (1.9ms)  SELECT COUNT(*) FROM "cars"
  Car Load (5.9ms)  SELECT  "cars".* FROM "cars"  ORDER BY "cars"."id" ASC LIMIT 1000
2016-01-13 08:57:41 +0000: POST ELASTICSEARCH_URL/cars/car/_bulk?type=car [status:200, request:0.036s, query:0.001s]
2016-01-13 08:57:41 +0000: > {"index":{"_id":3002}}
{"id":3002,"brand":"Ferrari","car_model":"458 Italia coupé"}
{"index":{"_id":3003}}
{"id":3003,"brand":"Porsche","car_model":"997 Carrera Tiptronic"}
...

2016-01-13 08:57:41 +0000: < {"took":1,"errors":true,"items":[
{"index":{"_index":"cars","_type":"car","_id":"3002","status":404,"error":"IndexMissingException[[cars] missing]"}},
{"index":{"_index":"cars","_type":"car","_id":"3003","status":404,"error":"IndexMissingException[[cars] missing]"}},
...
]}

[IMPORT] 103 errors occurred
[IMPORT] Done

Voilà donc le coupable ! L’index cars était absent et n’était pas créé automatiquement par la tâche d’import.

Résoudre ce problème est assez simple, quand on le sait, il suffit de passer l’option FORCE=y à notre commande :

$ heroku run bundle exec rake environment elasticsearch:import:all FORCE=y
[IMPORT] Processing model: Car...
2016-01-13 09:10:28 +0000: [404] {"error":"...; nested: IndexMissingException[[cars] missing]; ","status":404}
[!!!] Index does not exist (Elasticsearch::Transport::Transport::Errors::NotFound)
2016-01-13 09:10:28 +0000: [404]
[IMPORT] Done

Lorsque l’index absent est identifié, il est automatiquement créé.

Une solution simple à un problème simple mais lorsque l’information manque, elle est parfois dure à trouver.

Publié le 20 janvier 2016

Notre vision des choses vous correspond ? Vous avez envie de travailler avec nous ?