2017-05-31 238 views
1

我試圖用qwest一些數據發送到Elasticsearch:elasticsearch的406(不可接受)錯誤代碼是什麼意思?

qwest.post(
    'http://elk.example.com:9200/incidents', 
    this.incident, 
    {cache: true} 
) 
    .then(function (xhr, response) { 
     console.log('incident posted') 
    }) 
    .catch(function (e, xhr, response) { 
     console.log('error posing incident: ' + e) 
    }) 

其中this.incidentObject(從Vue.js)。

呼叫失敗,出現406 (Not Acceptable)錯誤,其中I understand是來自Elasticsearch服務器的信息,告訴我我想要某種格式的答案,但他不能使用。

然而,調用失敗(沒有索引的文檔),所以我不確定我的理解是否正確?

如果是這樣 - 請求的格式是什麼?

+0

是否要創建新文檔並同時創建索引? – Val

+0

@Val:是的,第一個電話。但是,也可以使用相同的調用來索引新文檔(當索引由第一個調用創建時)。我可以手動創建索引(如果這有幫助的話)(我認爲這沒什麼關係) – WoJ

+0

@Val:我剛剛嘗試創建索引('PUT/incidents'),創建索引並重新發出我的問題中的調用導致同樣的問題(因此索引是否存在並不重要) – WoJ

回答

4

incident對象不是正確序列化的JSON字符串。您需要撥打JSON.stringify(this.incident)才能獲得相應的JSON字符串,並指定application/json HTTP標頭。

$.ajax({ 
      url: 'http://example.com:9200/incidents/incidents', 
      type: 'POST', 
      data: JSON.stringify(this.incident), 
      dataType: 'json' 
     })