J'ai suivi pas à pas le tuto sur les bases de données NoSQL et après plusieurs jours entiers je n'ai pas réussis à intégrer les données dans mon Index elasticsearch.
J'ai télécharger le fichier Movies qui est proposé dans le cours que j'ai tenté d'intégrer avec l'utilitaire CURL comme indiqué mais je n'y parvient pas.
J'ai installé elasticsearch en version 8.5.3 sous Windows 10, j'arrive à communiquer avec localhot:9200 mais je n'arrive pas à intégrer des données.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
-{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Action/metadata line [1] contains an unknown parameter [index]"}],"type":"illegal_argument_exception","reason":"Action/metadata line [1] contains an unknown parameter [index]"},"status":400}
J'en suis arriver à installer Go pour elasticsearch (source github) mais je n'ai pas compris où on doit rajouter du code dans un fichier .go (lequel et où il se trouve).
J'ai aussi utilisé un script en python qui ne plante pas mais je ne parvient pas à vérifier si j'ai des données dans mon indexes j'ai essayé:
"reason" : "[1:3] Unexpected character ('q' (code 113)): was expecting double-quote to start field name\n at [Source: (org.elasticsearch.common.io.stream.ByteBufferStreamInput); line: 1, column: 3]"
}
Je ne vois pas où est l'erreur de syntaxe.
A l'adresse localhost/Movies2/movie/_search je reçois:
-{"error":"no handler found for uri [/movies2/movie/_search] and method [GET]"}
Je n'arrive pas à debbuger non plus.
Si vous avez une idée, merci d'avance.
- Edité par GabrielGatto 23 janvier 2023 à 15:48:19
Dans tout ce que tu as donné, je ne vois aucun code Python...
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
C'est parceque j'ai utilisé python en désespoir de cause.
Voici mon script python et le début de mon fichier de données qui est au format JSON (validé).
import sys
import json
from pprint import pprint
from elasticsearch import Elasticsearch
es = Elasticsearch([{'host': 'localhost', 'port': 9200,'scheme': 'https'}])
MyFile= open(r"C:\Users\GABRIEL.GATTO\Documents\Perso\ElasticSearch\elasticsearch-8.5.3-windows-x86_64\DATA\movies_for_elastic.json\mapping_movies\movies_elastic2_bckp.json", encoding="utf8").read()
ClearData = MyFile.splitlines(True)
i=0
json_str=""
docs ={}
for line in ClearData:
line = ''.join(line.split())
if line != "},":
json_str = json_str+line
else:
docs[i]=json_str+"}"
json_str=""
print(docs[i])
es.index(_index='movies2', _id=i, body=docs[i])
i=i+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"},
-{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Action/metadata line [1] contains an unknown parameter [index]"}],"type":"illegal_argument_exception","reason":"Action/metadata line [1] contains an unknown parameter [index]"},"status":400}
l'erreur est affichée: le paramètre [index] est inconnu, il s'attend donc à autre chose.
J'en suis arriver à installer Go pour elasticsearch (source github) mais je n'ai pas compris où on doit rajouter du code dans un fichier .go (lequel et où il se trouve).
J'ai aussi utilisé un script en python qui ne plante pas mais je ne parvient pas à vérifier si j'ai des données dans mon indexes j'ai essayé:
"reason" : "[1:3] Unexpected character ('q' (code 113)): was expecting double-quote to start field name\n at [Source: (org.elasticsearch.common.io.stream.ByteBufferStreamInput); line: 1, column: 3]"
}
Je ne vois pas où est l'erreur de syntaxe.
a priori un guillemet en trop dans la ligne de commande ou les guillemets intérieurs doivent être échappés:
Pour mon fichier JSON il est validé soit avec NotePad++ soit avec un utilitaire en ligne. Je comprend pas ton commentaire (tu as plusieurs fois "index" au même niveau d'arborescence (clés dupliquées)) mais je vais y regarder.
Je vais essayer la syntaxe que tu me dones pour la requête CURL.
j'utilise cette requête pour insérer des données dans un index elasticsearch mais je n'y parvient pas sachant que je communique bien avec mon localhost.
"error":"no handler found for uri [/clients/simple] and method [POST]"
J'ai configuré les roles pour mon utilisateur dans le fichier role_mapping.yml:
# Définir les rôles pour les différents types d'utilisateurs
roles:
full_access:
# Définir les autorisations pour ce rôle
indices:
"*":
"*":
- read
- index
- create
- delete
- manage
- write
# Assigner des utilisateurs à des rôles
users:
"*":
roles: [ full_access ]
voilà ce que j'obtiens quand je lance la requête suivante pour trouver mon nom de user:
curl -X GET "localhost:9200/_cat/nodes?v&h=name,master"
name master
node-1 *
Rien à faire je ne peut pas insérer de données et cela depuis des semaines.
Quelqu'un saurait me dire d'où vient le problème et comment je peux autoriser les methodes PUT et POST sur mon serveur?
Merci d'avance pour vos réponses.
- Edité par GabrielGatto 1 février 2023 à 10:54:19
Merci pour tes réponses, j'ai finalement installé une version 6.3 d'Elasticsearch et je n'ai plus aucuns problèmes pour insérer des données ou y accéder.
elasticsearch
× 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.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)