java - 如何在Elasticsearch中管理值的自动排序

标签 java elasticsearch spring-data-elasticsearch

如何从某个序列号开始以1.递增。externalId的格式为“EXT20000”,它是唯一的数字,并且以1递增,我们正在从外部系统迁移到Elasticsearch,必须管理计数增量。我不想从应用程序内部增加它,因为可能正在运行多个容器,并且很难以原子方式增加它。每当在之前的插入新文档时,如何在Elasticsearch中增加。我想问问ES这个序列号,并将其与文档一起以“EXT” +“next-sequence-number”的格式保存。

@Document(indexName = "bars", shards = 1, versionType = VersionType.INTERNAL, createIndex = true)
public class Bar implements Persistable<String> {
    @Id
    private String id;

    @Field(type = FieldType.Keyword)
    private String externalId;
...
}

最佳答案

我所知道的是,不可能保证整个集群的原子性。更糟糕的是,在为文档建立索引时,您无权访问其他文档,因此ingest pipelines也不可能(至少如果我们一口气谈论增量)。
为什么要求原子增量? Herehere是不使用它的一些经典原因。

关于java - 如何在Elasticsearch中管理值的自动排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64694974/

相关文章:

elasticsearch - Spring Data Elasticsearch 自动重连

java - Eclipse 不会推断匿名类的泛型吗?

java - 无法确定 loggerName (org.optaplanner.core) 的日志记录级别

elasticsearch - 在单个ElasticSearch查询中组合文本模式和大于数字的比较

search - 在ElasticSearch中找到日期差

performance - 如何在Elasticsearch Service中随着数据大小的增加而降低索引和检索性能?

elasticsearch - findAllByX 错误地限制为 10 个结果

java - Spring data Elasticsearch 按字段查找和最新日期查询

java - 优化对象列表的fasterxml ObjectMapper

java - 无需应用程序测试 Spring/Spring Boot