我们使用弹性搜索动态映射和java文件如下。在动态java映射文件中弹性搜索ttl(生存时间) - 弹性数据弹性搜索
@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不是要添加到每个索引,它应该在所有文档的通用级别吗?如果是这样,我应该为每个时间表运行设置它吗?
感谢,
感谢您的建议。在数据库级别处理不是一种选择。 – user1578872