2013-10-08 30 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。

相关问题