2013-10-08 53 views
0

我想添加數據以及更新我的elasticsearch索引。 因爲我對elasticsearch客戶端不是很有經驗,所以我嘗試用jQuery來處理所有事情。使用jQuery將數據添加到elasticsearch索引

要添加數據,我首先檢查最高id,然後我想通過PUT發送一個JSON對象。

var persondata = { 
    "field1": $('#field1').val(), 
    "field2": $('#field2').val(), 
    "field3": $('#field3').val() 
}; 

$.ajax({ 
    type: "POST", 
    url: 'http://localhost:9200/_search', 
    dataType: 'json', 
    data: JSON.stringify({ "query" : { "match_all" : {} }, "sort": [ { "_uid": "desc" } ] }) 
}) 
.done(function(result){ 
    var highestid = parseInt(result.hits.hits[0]._id, 10) + 1; 

    $.ajax({ 
     type: "PUT", 
     url: 'http://localhost:9200/mytable/persons/'+ highestid, 
     dataType: 'json', 
     data: JSON.stringify(persondata) 
    }); 
}); 

要通過捲曲添加數據,我發現下面的代碼:

curl -XPUT "http://localhost:9200/movies/movie/1" -d' 
{ 
    "title": "The Godfather", 
    "director": "Francis Ford Coppola", 
    "year": 1972 
}' 

(來源:http://joelabrahamsson.com/elasticsearch-101/

由於我的代碼不工作,我想知道如果我需要的「-d」也在id之後。當然,我試圖簡單地添加這個,但它不起作用。
這個「-d」是什麼?
此外,我需要做些什麼來通過jQuery向我的elasticsearch索引添加數據?

+0

您不需要創建一個ID。 ES會爲你創建一個唯一的ID。 –

+2

-d是告訴命令行不要發送命令,直到關閉引用。僅用於命令行。 –

+1

使用chrome瀏覽器的'sense'插件來測試您的所有elasticsearch工作。太棒了。我不會使用jquery,直到你的查詢很緊。 –

回答

1

您可以使用此代碼創建或更新數據:

$.ajax({ 

     type: "PUT", 
     async: false, 
     url: 'http://{localhost}:9200/twitter/tweet/9', 
     data: JSON.stringify({"user" : "kimchy","post_date" : "2009-11-15T14:12:12","message" : "trying out Elasticsearch"}), 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     success: function (msg) 
       { 
        alert("the json is "+ msg._index); 
        $('#stage').html(msg._index); 
        $('#stage').append(" type : "+msg._type); 
        $('#stage').append(" id :"+msg._id) 
       }, 
     error: function (err) 
     { alert(err.responseText)} 
    }); 

請記住,必須把指數,對URL的類型和ID。

相關問題