【问题标题】:Elastic Search ttl (time to live) in the dynamic java mapping file - Spring data elastic search动态java映射文件中的Elastic Search ttl(time to live) - Spring data elastic search
【发布时间】:2015-08-21 02:11:10
【问题描述】:

我们使用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 不添加到每个索引,它应该在所有文档的通用级别吗?如果是这样,我应该为每个计划运行设置这个吗?

谢谢,

【问题讨论】:

    标签: elasticsearch spring-data-elasticsearch


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      根据this open issue,Spring Data Elasticsearch 目前不支持_ttl 字段。

      另一种方法是通过设置标志(即新的布尔列)从数据库中“软删除”记录。该标志在记录处于活动状态时为真,在记录被删除时为假。这样,当您的导入过程运行时,您将获得所有记录,并且根据该标志您知道您必须从 Elasticsearch 中删除文档。

      【讨论】:

      • 感谢您的建议。不能在数据库级别进行处理。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 2016-03-29
      相关资源
      最近更新 更多