2016-01-26 14 views
20

Eklenti belgesi ai'nin otomatik artış kimliği özelliği kullanılarak elasticsearch dizinime ham NodeJS http isteği yapmaya çalışıyorum.uri [/ <index>/<type> /] için bir işleyici bulunamadı ve yöntem [PUT]

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

Ama bu aracılığıyla nodejs aynı çalıştığınızda:

Yani bu curl ile çalışır

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

:

var http = require('http'); 

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

http.request(options, ...); 

Bu hata döndürür

Howev Bu yolun sonuna bir id eklerseniz, bu işe yarayacaktır. Burada neyin var? Eğer POST kullandığınızda

cevap

36

Buradaki sorun ES sizin için her zaman benzersiz _id üretecektir, _id isteğe bağlıdır, yolu POST ve PUT çalışır. İşte

Eğer PUT yüzden _id gerekli olan kullanıyorsunuz, ES o kimliğe sahip yeni bir belge oluşturur ya da varsa o id ile belgeyi güncelleyecektir. Bu konuda more okuyabilirsiniz. POST istekle

deneyin indeksleme Kimliği bu yardımcı olur

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

Umut belirtmek istemiyorum eğer curl yaptığı gibi!

+0

Çok uzun zamandır çalışıyorum gibi görünüyor! Bilgi için teşekkürler! – Breedly

+0

memnun olabilirim! – ChintanShah25

İlgili konular