ElasticSearch实时GET API似乎不起作用

时间:2014-03-22 10:28:38

标签: elasticsearch

我正在尝试使用ElasticSearch的GET API访问文档但是尽管文档声称是实时的,但我似乎无法使其正常工作。

这是我试过的:

使用自定义ID索引事件:

POST: http://hostname.com:9200/events/purchase/<custom_id>

使用以下方法立即检索文档:

GET: http://hostname.com:9200/events/purchase/<custom_id>

问题是找不到该文件。

更新:

似乎问题只发生在索引最初为空且这是第一个要写入的文档时。后续请求被索引并检索得很好。

2 个答案:

答案 0 :(得分:0)

这可能不是最好的代码,但我认为这显示了你想要的。如果可能,请切换到elasticsearch.js客户端。这就是本示例代码中使用的内容。

var elasticsearch = require('elasticsearch');
var config = {host:'localhost:9200'};

var client = new elasticsearch.Client({
    host: config.host,
    log:'trace'
});

storeEvent({"title":"My Event"}, 1);

function storeEvent(myEvent, id) {

    client.create({
        "index":"events",
        "type":"purchase",
        "id":id,
        "body":myEvent
    }, function(error,response) {
        if (error) {
            console.log("Error during creating event");
            console.log(error);
        } else {
            console.log("Submitted event");
        }
        client.get({
            "index":"events",
            "type":"purchase",
            "id":id
        }, function (error,response) {
            if (error) {
                console.log("Error during obtaining event");
                console.log(error);
            } else {
                console.log(response);
            }
        })
    });
}

答案 1 :(得分:0)

您使用的是哪个版本? 1.2.0有一个涉及路由的错误:http://www.elasticsearch.org/blog/elasticsearch-1-2-1-released/

如果您通过重新索引数据来修复问题,那么值得注意的是它不会与未来的版本兼容。