嗯,这是详细信息:
首先,我创建了三个文档:
foo/bar/1
foo/bar/2
foo/bar/3
我希望获得最大ID:
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
host: 'localhost: 9200'
});
client.search({
index: 'foo',
type: 'bar',
sort: '_id:desc',
size: 1,
fields: [ '_id' ]
}, function(err, resp) {
if (err) return console.error(err);
console.log(resp.hits); // _id is '1'
})
在上面的代码中,我无法得到正确的结果。
然后,我谷歌了解它的原因,我找到了'_uid'
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
host: 'localhost: 9200'
});
client.search({
index: 'foo',
type: 'bar',
sort: '_uid:desc', // here is a little bit different
size: 1,
fields: [ '_id' ]
}, function(err, resp) {
if (err) return console.error(err);
console.log(resp.hits); // _id is '3'
})
是的,我得到了正确的结果。
所以问题是
我可以说'_id'和'_uid'是一回事吗?
'_id'是否等于'_uid'?
答案 0 :(得分:3)
不完全相同。
如果_uid
未编入索引以执行基于类型的过滤,则会自动使用_type
字段,并且不需要对_id
编制索引。
http://www.elastic.co/guide/en/elasticsearch/reference/1.3/mapping-uid-field.html
答案 1 :(得分:0)
不,他们不一样。 _uid 是类型和 _id 的组合: {type}#{id} 。因此, _uid 在索引中是唯一的,而 _id 在类型(see the official documentation)中是唯一的。