J'ai intégré Elasticsearch (Version 5.5) dans Gitlab et j'essaie de l'utiliser. Voici la commande que j'envoie à partir d'un client Windows externe:
curl -XGET gitlab.server:9200/ -H 'Content-Type: application/json' -d '{"query": {"simple_query_string" : {"fields" : ["content"], "query" : "foo bar -baz"}}}'
mais ça ne marche pas. Sur le client, je reçois ces erreurs:
{"error": "L'en-tête Content-Type [application/x-www-form-urlencoded] n'est pas pris en charge", "status": 406}
curl: (6) Impossible de résoudre l'hôte: texte
curl: (3) [globbing] accolade inégalée dans la colonne 1
curl: (3) URL incorrecte, deux points est le premier caractère
curl: (3) [globbing] accolade inégalée dans la colonne 1
curl: (3) URL incorrecte, deux points est le premier caractère
curl: (3) [globbing] mauvaise plage dans la colonne 2
curl: (6) Impossible de résoudre l'hôte: requête
curl: (3) URL incorrecte, deux points est le premier caractère
curl: (3) [globbing] accolade/support de fermeture inégalé dans la colonne 13
Sur le serveur dans /var/log/elasticsearch/elasticsearch.log, je ne vois aucun message de journal.
Cependant, l'exécution de la même commande exacte que ci-dessus à partir du serveur Linux me donne une réponse sans erreur:
{
"name" : "name",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "uuid",
"version" : {
"number" : "5.5.0",
"build_hash" : "260387d",
"build_date" : "2017-06-30T23:16:05.735Z",
"build_snapshot" : false,
"lucene_version" : "6.6.0"
},
"tagline" : "You Know, for Search"
}
J'ai essayé d'ajouter http.content_type.required: true
à elasticsearch.yml, mais le problème était le même. Alors, qu'est-ce que je fais mal ici? Pourquoi est-ce que j'obtiens un "en-tête Content-Type non pris en charge" du client Windows? Comment puis-je résoudre ça?
Après avoir changé le 'en "comme ceci:
curl -XGET gitlab.server:9200/ -H "Content-Type: application/json" -d "{"query": {"simple_query_string" : {"fields" : ["content"], "query" : "foo bar -baz"}}}"
Je reçois cette réponse:
{
"name" : "name",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "uuid",
"version" : {
"number" : "5.5.0",
"build_hash" : "260387d",
"build_date" : "2017-06-30T23:16:05.735Z",
"build_snapshot" : false,
"lucene_version" : "6.6.0"
},
"tagline" : "You Know, for Search"
}
curl: (6) Could not resolve Host: bar
Après avoir modifié les guillemets fermants de '
à "
, échappez aux guillemets "
utilisé dans les paramètres comme ci-dessous:
curl -XGET gitlab.server:9200/ -H "Content-Type: application/json" -d "{\"query\": {\"simple_query_string\" : {\"fields\" : [\"content\"], \"query\" : \"foo bar -baz\"}}}"
Un alternative consiste à mettre le json dans un fichier et à utiliser le @
préfixe des paramètres.
json.txt
{
"query": {
"simple_query_string" : {
"fields" : ["content"],
"query" : "foo bar -baz"
}
}
}
et exécutez curl comme ci-dessous:
curl -XGET gitlab.server:9200/ -H "Content-Type: application/json" -d @json.txt