gpt4 book ai didi

elasticsearch - 动态Java映射文件中的Elastic Search TTL(生存时间)-Spring Data Elastic Search

转载 作者:行者123 更新时间:2023-12-03 02:01:22 25 4
gpt4 key购买 nike

我们使用 Elasticsearch 动态映射,并且java文件如下。

@Document(indexName = "test", type = "test", shards = 1, replicas = 0)
public class ElasticSearchIndexObject {

private @Id
@Indexed
String id;

private @Indexed("name")
String name;
}

我们使用每60分钟运行一次的调度程序来从数据库中获取数据并添加到索引中。
Connection conn = dataSource.getConnection();

stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(FETCH_SIZE);

rs = stmt.executeQuery(ESEARCH_QUERY);

int i=1;
while (rs.next()) {
ElasticSearchIndexObject indexObj = new ElasticSearchIndexObject();
indexObj.setName(rs.getString("name"));
indexObj.setId(rs.getString("id"));

indexObjects.add(indexObj);

i=i+1;
}

elasticSearchObjectIndexRepository.save(indexObjects);
indexObjects.clear();

}

该调度程序每60分钟运行一次,并添加/更新索引。

添加-如果索引中没有ID
更新-如果索引中已经有ID

问题在于数据库中已删除的记录。这些记录不会从索引中删除,而是成为孤立记录。

我遇到了“ttl”属性,正在寻找一种将其添加到索引中的方法,以便在ttl时间之后将孤立记录删除。

如果ttl不是要添加到每个索引,那么是否应该在所有文档的通用级别上使用?如果是这样,我是否应该为每个时间表运行设置此设置?

谢谢,

最佳答案

确保索引类型已经配置了其"_ttl" : { "enabled" : true }映射。然后在_ttl中传递文档的_source值。在您的POJO中添加以下字段:

@JsonInclude(value=Include.NON_EMPTY)  //to make it optional
@JsonProperty("_ttl")
private Long ttl;

关于elasticsearch - 动态Java映射文件中的Elastic Search TTL(生存时间)-Spring Data Elastic Search,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32131329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com