使用 TTL Persistance 从 Cassandra 到 ElasticSearch 的实时数据复制
Real time copy of data with TTL Persistance from Cassandra to ElasticSearch
我有 Cassandra 数据库,其中的数据每个列值的 TTL 为 X 小时,这需要实时推送到 ElasticSearch 集群。
我看到 past posts on Whosebug 建议使用 LogStash 等工具或直接从应用层推送数据。
但是,在 ES 版本 >=5.0 中复制数据后,如何保留导入数据的 TTL?
曾经有一个名为 _ttl
的字段已 deprecated in ES 2.0 and removed in ES 5.0。
从 ES 5 开始,现在有两种官方方法可以保留数据的 TTL。首先确保在您的 ES 文档中创建一个 TTL 字段,该字段将设置为您在 Cassandra 中的行的创建日期 + TTL 秒数。所以如果在 Cassandra 中你有这样的记录:
INSERT INTO keyspace.table (userid, creation_date, name)
VALUES (3715e600-2eb0-11e2-81c1-0800200c9a66, '2017-05-24', 'Mary')
USING TTL 86400;
那么在ES中,你应该导出如下文件到ES:
{
"userid": "3715e600-2eb0-11e2-81c1-0800200c9a66",
"name": "mary",
"creation_date": "2017-05-24T00:00:00.000Z",
"ttl_date": "2017-05-25T00:00:00.000Z"
}
那么您可以:
一个。使用将根据您的 ttl_date
字段之一定期执行 delete by query 的 cron,即从您的 cron 调用以下命令:
curl -XPOST localhost:9200/your_index/_delete_by_query -d '{
"query": {
"range": {
"ttl_date": {
"lt": "now"
}
}
}
}'
乙。或者使用基于时间的索引并将每个文档插入与其 ttl_date
字段匹配的索引中。例如,上面的文档将被插入到名为 your_index-2017-05-25
的索引中。然后用过期的curator tool you can easily delete indices
我有 Cassandra 数据库,其中的数据每个列值的 TTL 为 X 小时,这需要实时推送到 ElasticSearch 集群。
我看到 past posts on Whosebug 建议使用 LogStash 等工具或直接从应用层推送数据。
但是,在 ES 版本 >=5.0 中复制数据后,如何保留导入数据的 TTL?
曾经有一个名为 _ttl
的字段已 deprecated in ES 2.0 and removed in ES 5.0。
从 ES 5 开始,现在有两种官方方法可以保留数据的 TTL。首先确保在您的 ES 文档中创建一个 TTL 字段,该字段将设置为您在 Cassandra 中的行的创建日期 + TTL 秒数。所以如果在 Cassandra 中你有这样的记录:
INSERT INTO keyspace.table (userid, creation_date, name)
VALUES (3715e600-2eb0-11e2-81c1-0800200c9a66, '2017-05-24', 'Mary')
USING TTL 86400;
那么在ES中,你应该导出如下文件到ES:
{
"userid": "3715e600-2eb0-11e2-81c1-0800200c9a66",
"name": "mary",
"creation_date": "2017-05-24T00:00:00.000Z",
"ttl_date": "2017-05-25T00:00:00.000Z"
}
那么您可以:
一个。使用将根据您的 ttl_date
字段之一定期执行 delete by query 的 cron,即从您的 cron 调用以下命令:
curl -XPOST localhost:9200/your_index/_delete_by_query -d '{
"query": {
"range": {
"ttl_date": {
"lt": "now"
}
}
}
}'
乙。或者使用基于时间的索引并将每个文档插入与其 ttl_date
字段匹配的索引中。例如,上面的文档将被插入到名为 your_index-2017-05-25
的索引中。然后用过期的curator tool you can easily delete indices