我正在尝试使用ElasticSearch的GET API访问文档但是尽管文档声称是实时的,但我似乎无法使其正常工作。
这是我试过的:
使用自定义ID索引事件:
POST: http://hostname.com:9200/events/purchase/<custom_id>
使用以下方法立即检索文档:
GET: http://hostname.com:9200/events/purchase/<custom_id>
问题是找不到该文件。
更新:
似乎问题只发生在索引最初为空且这是第一个要写入的文档时。后续请求被索引并检索得很好。
答案 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/
如果您通过重新索引数据来修复问题,那么值得注意的是它不会与未来的版本兼容。