0

我想添加数据以及更新我的弹性搜索索引。由于我对弹性搜索客户端不是很有经验,所以我尝试使用 jQuery 来处理所有事情。

要添加数据,我首先检查最高的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 添加数据,我找到了以下代码:

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 将数据添加到我的弹性搜索索引?

4

1 回答 1

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)}
    });

请记住,必须将索引、类型和 id 放在 url 上。

于 2014-07-17T12:45:14.253 回答