我需要跨两个索引的自动增量整数字段。
Elasticsearch可以自动执行,如MySQL"自动增量"表中的字段?
EG。将一些文档放在两个不同的索引中时:
POST /my_index_1/blogpost/
{
"title": "Foo Bar"
}
POST /my_index_2/blogpost/
{
"title": "Baz quux"
}
在检索它时,我想要:
GET /my_index_*/blogpost/
{
"uid" : 1,
"title": "Foo Bar"
},
{
"uid" : 2,
"title": "Baz quux"
}
答案 0 :(得分:5)
不,ES没有任何自动增量功能,因为它是一个分布式系统,计算出正确的计数器值是非常重要的。特别是因为(批量)索引往往是大量并发的。如果您在其上放置足够的文档,通常可以在所有节点上最大化CPU。
因此,在将文档发送给ES之前,最好的选择是在ES之外执行此操作。或者甚至更好,不要这样做。如果您需要某种插入顺序,更好的选择是简单地使用时间戳。它们实际上是在内部存储的数字。如果两个文档被索引相同的毫秒,你仍然可能会得到重复。我们习惯解决的一个技巧是将同时索引的文档偏移1 ms。确保我们保持广告订单。