Elasticsearch:跨两个索引自动递增整数字段

时间:2016-09-07 07:07:06

标签: elasticsearch

我需要跨两个索引的自动增量整数字段。

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"
}

1 个答案:

答案 0 :(得分:5)

不,ES没有任何自动增量功能,因为它是一个分布式系统,计算出正确的计数器值是非常重要的。特别是因为(批量)索引往往是大量并发的。如果您在其上放置足够的文档,通常可以在所有节点上最大化CPU。

因此,在将文档发送给ES之前,最好的选择是在ES之外执行此操作。或者甚至更好,不要这样做。如果您需要某种插入顺序,更好的选择是简单地使用时间戳。它们实际上是在内部存储的数字。如果两个文档被索引相同的毫秒,你仍然可能会得到重复。我们习惯解决的一个技巧是将同时索引的文档偏移1 ms。确保我们保持广告订单。