2016-01-26 3 views
20

Sto provando a fare una richiesta http NodeJS non elaborata al mio indice elasticsearch utilizzando la funzione di ID di incremento automatico di api del documento di inserimento.Nessun gestore trovato per uri [/ <index>/<type> /] e metodo [PUT]

Quindi, questo funziona con curl:

curl -XPOST http://host:3333/catalog/products -d '{ "hello": "world" }'

Ma quando provo lo stesso in nodejs tramite questo:

var http = require('http'); 

var options = { 
    protocol: 'http:', 
    mehtod: 'PUT', 
    hostname: 'host', 
    port: 3333, 
    path: '/catalog/products/' 
} 

http.request(options, ...); 

Si restituisce questo errore:

No handler found for uri [/catalog/products/] and method [PUT]

Howev E se aggiungo un id alla fine di quel percorso funzionerà. Cosa c'è che non va qui?

risposta

36

Il problema qui è il modo POST e PUT lavori, quando si utilizza POST, _id è facoltativo, ES genererà un unico _id per voi ogni volta.

Qui si sta utilizzando in modo PUT_id è richiesto, ES sarà o creare un nuovo documento con l'ID o si aggiorna il documento con questo ID, se esiste. Puoi leggere more su questo.

Prova indicizzazione con POST richiesta, come avete fatto con curl se non volete specificare id

var options = { 
    protocol: 'http:', 
    hostname: 'host', 
    port: 3333, 
    path: '/catalog/products/', 
    method: 'POST'     <--- specify method 
} 

Spero che questo aiuti!

+0

Sembra che abbia lavorato troppo a lungo! Grazie per le informazioni! – Breedly

+0

felice di poterti aiutare! – ChintanShah25