我需要跨两个索引的自动递增整数字段。
Elasticsearch可以像表中的MySQL“自动增量”字段一样自动执行吗?
例如。将某些文档放在两个不同的索引中时:
POST /my_index_1/blogpost/
{
"title": "Foo Bar"
}
POST /my_index_2/blogpost/
{
"title": "Baz quux"
}
Run Code Online (Sandbox Code Playgroud)
在检索它时,我想要:
GET /my_index_*/blogpost/
{
"uid" : 1,
"title": "Foo Bar"
},
{
"uid" : 2,
"title": "Baz quux"
}
Run Code Online (Sandbox Code Playgroud)
不可以,ES不具有任何自动递增功能,因为它是分布式系统,因此计算出正确的计数器值并非易事。尤其是因为(批量)索引趋向于大量并发。如果向其扔足够的文档,通常可以使所有节点上的CPU最大化。
因此,最好的选择是在将文档发送到ES之前在ES之外执行此操作。甚至更好,不要这样做。如果您需要某种插入顺序,则更好的选择是简单地使用时间戳。它们实际上在内部存储为数字。如果两个文档的索引相同,当然您仍然可能会得到重复。我们惯用的解决方法是将同时索引的文档偏移1 ms。以确保我们保留广告订单。
| 归档时间: |
|
| 查看次数: |
2221 次 |
| 最近记录: |