有没有一种方法可以从ElasticSearch中检索有关特定索引的最新更新时间的信息?我的目标是能够知道什么时候是最后一次在索引中插入/更新/删除任何文档。如果无法做到这一点,是否可以在索引修改请求中添加一些内容,以便稍后提供此信息?
您可以从_timestamp获取修改时间
为了更轻松地返回时间戳,您可以设置Elasticsearch来存储它:
curl -XPUT "http://localhost:9200/myindex/mytype/_mapping" -d' { "mytype": { "_timestamp": { "enabled": "true", "store": "yes" } } }'
如果插入文档然后对其进行查询,则会得到时间戳记:
curl -XGET 'http://localhost:9200/myindex/mytype/_search?pretty' -d '{ > fields : ["_timestamp"], > "query": { > "query_string": { "query":"*"} > } > }' { "took" : 7, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 1.0, "hits" : [ { "_index" : "myindex", "_type" : "mytype", "_id" : "1", "_score" : 1.0, "fields" : { "_timestamp" : 1417599223918 } } ] } }
更新现有文档:
curl -XPOST "http://localhost:9200/myindex/mytype/1/_update" -d' { "doc" : { "field1": "data", "field2": "more data" }, "doc_as_upsert" : true }'
重新运行上一个查询将向我显示一个更新的时间戳:
"fields" : { "_timestamp" : 1417599620167 }