我們使用彈性搜索動態映射和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