Partage
  • Partager sur Facebook
  • Partager sur Twitter

Maitrisez les bases de donnees NoSQL

Erreur dans le cours

    3 janvier 2019 à 15:13:01

    Bonjour,

    je n'ai pas trouvé de topic pour ce cours donc je poste ici. Mes excuses s'il existait ailleurs.

    Il existe une erreur dans cette leçon dans la partie "Interrogez des données textuelles: Tri des résultats". En effet, sauf erreur de ma part, dans

    {"aggs" : {
        "group_year" : {
            "terms" : {
                "field" : "fields.year",
                "order" : { "rating_moyen" : "desc" }
            },
            "aggs" : {
                "note_moyenne" : {"avg" : {"field" : "fields.rating"}}
            }
    }}}

    le champs rating_moyen n'existe pas, il s'agit en fait de note_moyenne (ou l'inverse), ce qui donne une savoureuse erreur :

    "Invalid aggregator order path [rating_moyen]. Unknown aggregation [rating_moyen]"


    Bonne années à tous.

    • Partager sur Facebook
    • Partager sur Twitter
      3 janvier 2019 à 15:29:49

      Bonjour,

      Hello @OC

      Je vous invite à directement contacter l'équipe du site via l'adresse hello@openclassrooms.com. En effet, l'équipe du site ne passant que très rarement sur les forums, il sera beaucoup plus efficace de les contacter directement.

      Ou contacter par MP un des deux auteurs déclarés, en le renvoyant sur ce sujet ;)

      https://openclassrooms.com/fr/mp/nouveau/regisb-1

      https://openclassrooms.com/fr/mp/nouveau/nicolastravers

      -
      Edité par Benzouye 3 janvier 2019 à 15:39:13

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        3 janvier 2019 à 16:06:45

        OK, c'est fait, j'ai contacté Nicolas Travers.

        J'en profite pour ajouter une erreur détectée:

        db.restaurants.find({
            "grades" : {
                   $elemMatch : {
                       "grade" : "C",
                       "score" : {$l t :40}  <<<<<<<<<<<<<<<<
                   }
            }
          },
          {"grades.grade" : 1,"grades.score" : 1}
        );
        
        {
            "_id" : ObjectId("594b9172c96c61e672dcd6bc"),
            "grades" : [
                   {"grade" : "A","score" : 9},
                   {"grade" : "A","score" : 10},
                   {"grade" : "A","score" : 9},
                   {"grade" : "C","score" : 32}
            ]
        }

        Il y  un espace de trop dans {$l t :40}.

        J'ai aussi un problème avec toute la partie Agrégat de type Raw:

        {
          "error" : {
            "root_cause" : [
              {
                "type" : "illegal_argument_exception",
                "reason" : "Fielddata is disabled on text fields by default. Set fielddata=true on [fields.actors.raw] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."
              }
            ],
            "type" : "search_phase_execution_exception",
            "reason" : "all shards failed",
            "phase" : "query",
            "grouped" : true,
            "failed_shards" : [
              {
                "shard" : 0,
                "index" : "movies3",
                "node" : "M7gTyIpaT6aXBhCiv9HZGw",
                "reason" : {
                  "type" : "illegal_argument_exception",
                  "reason" : "Fielddata is disabled on text fields by default. Set fielddata=true on [fields.actors.raw] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."
                }
              }
            ],
            "caused_by" : {
              "type" : "illegal_argument_exception",
              "reason" : "Fielddata is disabled on text fields by default. Set fielddata=true on [fields.actors.raw] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.",
              "caused_by" : {
                "type" : "illegal_argument_exception",
                "reason" : "Fielddata is disabled on text fields by default. Set fielddata=true on [fields.actors.raw] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."
              }
            }
          },
          "status" : 400
        

        J'ai cru comprendre d'après mes recherchers qu'il s'agit d'un problème de mapping. Autre suspect: je travaille avec la version 6.5.4 qui est apparemment différente de la version utilisée pour le cours. Ceci explique peut-être cela.

        Dans le cours sur Kibana, il y a une erreur dans le code pour l'installation:

        $ wget https://artifacts.elastic.co/downloads/kibana/kibana-5.6.0-linux-x86_64.tar.gz
        $ tar xzf kibana-5.6.0-linux-x86_64.tar.gz
        $ cd kibana-5.6.0/ <<<<<< deverait être kibana-5.6.0-linux-x86_64.tar.gz
        $ ./bin/kibana


         

        -
        Edité par QuentinLeguay 3 janvier 2019 à 20:41:22

        • Partager sur Facebook
        • Partager sur Twitter
          3 janvier 2019 à 23:03:12

          Bonjour,

          J'ai corrigé les erreurs de typos.

          Pour ce qui est du mapping, les versions d'elasticsearch changent tous les ans, voire 2 fois par an. Il est difficile de répertorier tous les changements et de les mettre à jour (c'est pour cela que la version affichée correspond à l'exercice).

          Le mapping n'est par contre plus d'actualité maintenant puisqu'il est automatique. Toutefois, via Kibana, il est possible de modifier celui-ci directement pour traiter des données en fonction d'un type particulier. Le principe reste le même.

          Concernant Kibana, je n'ai pas cette erreur, peut être votre distribution est-elle différente ?

          Cordialement,

          • Partager sur Facebook
          • Partager sur Twitter
            3 janvier 2019 à 23:50:54

            Bonsoir,

            merci pour votre réaction rapide. Concernant la version d'ElasticSearch, je viens de vérifier et effectivement j'avais raté le petit encart qui précise la version. Peut-être que changer l'ordre (avant le lien), la couleur (en orange plutôt qu'en bleue) ou mettre la version en gras pourrait aider les futurs étudiants.

            Concernant Kibana, l'erreur vient du fait que lors de la décompression, le nom du dossier résultant est kibana-5.6.0-linux-x86_64 (et non kibana-5.6.0-linux-X86_64.tar.gz comme je l'ai écrit). De ce fait, le cd ne trouve pas le dossier tel qu'écrit dans le cours. Etrange que ça ne soit pas comme ça chez vous.

            • Partager sur Facebook
            • Partager sur Twitter
              5 janvier 2019 à 15:35:27

              Effectivement, il y avait une erreur dans la commande "cd" de kibana, maintenant corrigée. Merci QuentinLeguay !

              Pour info, après la réalisation d'un cours les créateurs du cours (i.e: nous) reprenons nos activités normales, souvent très prenantes. Il nous est difficile de réaliser la maintenance du cours, notamment pour ce qui concerne les changements de version des logiciels comme Elasticsearch. Evidemment, on n'a pas envie que nos cours deviennent obsolètes, mais le boulot requis peut être important, bien que bénévole. Bref, pour des problèmes mineurs et bien décrits (avec les bons liens tout et tout) comme ceux que vous avez présentés, on peut les corriger, mais les sujets qui nécessitent une grosse relecture du cours sont plutôt à adresser à l'équipe d'Openclassrooms.

              Merci encore pour votre œil attentif !

              -
              Edité par RégisB. 5 janvier 2019 à 15:36:11

              • Partager sur Facebook
              • Partager sur Twitter
                5 janvier 2019 à 16:58:07

                Bonjour,

                merci pour les explications. N'étant qu'utilisateur premium simple, je n'ai aucune idée de comment fonctionne l'envers du décors avec les professeurs, les mentors, qui est employé de OCR, etc.

                J'ai vu que Nicolas Travers est HDR par exemple, je me doute  qu'il a peu de temps libre pour mettre à jours les cours tous les 6 mois. D'où mes rapport d'erreur bien documentés (en temps que dev, je sais l'horreur de recevoir un ticket type: "ça marche pas'). 

                Je pense cependant aux étudiants un peu moins expérimentés que moi qui peuvent bloquer sur certaines erreurs alors que s'il était facile de pouvoir les remonter, ça aiderait les corrections et les futurs étudiants.

                Par exemple, je suis bloqué dans le cours sur Hadoop, le tutorial d'installation est un peu léger pour une installation très technique. Je suis sûr que quelqu'un plus à l'aise que moi avec Linux pourrait facilement apporter des modifications mais il manque une fonctionnalité pour le faire facilement. C'est peut-être le seul vrai problème sur OCR que j'ai constaté. Visiblement la solution est d'écrire à hello@openclassrooms.com. Mais ont-ils toujours les compétences spécifiques?

                PS: à mon sens vous ne deveriez pas faire ces mises à jours bénévolement, c'est peut-être aussi une part du problème :)

                PS 2: ma certification de ce cours est maintenant fièrement ajoutée à mon Linkedin. Ça ne vous paye pas mais au moins ça vous fera sûrement un peu plaisir.

                -
                Edité par QuentinLeguay 5 janvier 2019 à 17:02:29

                • Partager sur Facebook
                • Partager sur Twitter
                  1 mai 2019 à 22:00:23

                  j'ai vu une erreur dans le fichier mapping présent sur le google drive pour l'index movies2.

                  les mappings raw sont tous avec fields du type text :

                                "directors": {

                                  "type": "text",

                                  "fields": {"raw": {"type": "text"}}

                  Alors qu'il devrait être de type keyword (c'est le cas dans le texte du cours d'ailleurs) :

                                "directors": {

                                  "type": "text",

                                  "fields": {"raw": {"type": "keyword"}}

                  après sur la 7.0 ça ne sert plus à rien, mais je suis repassé sur la 6.5 pour les exemples du cours et j'ai eu ce problème

                  ---

                  Pour ceux qui veulent utiliser elastic search 7.0, tout nouveau, pour les exemples movies 2, voilà la procédure  pour importer le fichier:

                  1.  créer l'index movie2 + le mapping (supprimer l'index au besoin d'abord):

                  PUT http://localhost:9200/movies2
                  content-type: application/json
                  
                  {
                      "mappings" : {
                          "properties" : {
                              "fields" : {
                                  "properties" : {
                                          "actors" : {
                                              "type" : "text",
                                              "fields": {
                                                  "raw": {"type":  "keyword"}
                                                  }
                                          },
                                          "directors" : {
                                              "type" : "text",
                                              "fields": {
                                                  "raw": {"type":  "keyword"}
                                                  }
                                          },
                                          "genre" : {
                                              "type" : "text",
                                              "fields": {
                                                  "raw": {"type":  "keyword"}
                                                  }
                                          },
                                          "image_url" : {
                                              "type" : "text",
                                              "fields": {
                                                  "raw": {"type":  "keyword"}
                                                  }
                                          }
                                  }
                              }
                          }
                      }
                  }

                  2. dans le fichier movies2.json, supprimer la définition du _type (les mapping type ne sont plus supportés).

                  il suffit de rechercher et remplacer "_type":"movie", par "" dans tout le fichier

                  Exemple pour le movie 1 :

                  {"index":{"_index": "movies2","_id":1}}
                  {"fields" : {"directors" : ["Joseph Gordon-Levitt"],"release_date" : "2013-01-18T00:00:00Z","rating" : 7.4,"genres" : ["Comedy","Drama"],"image_url" : "http://ia.media-imdb.com/images/M/MV5BMTQxNTc3NDM2MF5BMl5BanBnXkFtZTcwNzQ5NTQ3OQ@@._V1_SX400_.jpg","plot" : "A New Jersey guy dedicated to his family, friends, and church, develops unrealistic expectations from watching porn and works to find happiness and intimacy with his potential true love.","title" : "Don Jon","rank" : 1,"running_time_secs" : 5400,"actors" : ["Joseph Gordon-Levitt","Scarlett Johansson","Julianne Moore"],"year" : 2013},"id" : "tt2229499","type" : "add"}


                  et vous pouvez importer le fichier dans movies 2 par curl :

                  curl -XPUT -H "Content-Type: application/x-ndjson" http://localhost:9200/_bulk --data-binary @movies_elastic2.json

                  -
                  Edité par JulienLeroux38 2 mai 2019 à 15:46:12

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Maitrisez les bases de donnees NoSQL

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown