[英]Elasticsearch document ttl not working
我正在按照文檔中給出的示例為Elasticsearch中的文檔添加ttl: http : //www.elasticsearch.org/guide/zh-CN/elasticsearch/reference/current/docs-index_.html#index-ttl
在Chrome上使用Sense工具,我嘗試了以下操作,希望文檔在5秒鍾內消失:
PUT /twitter/tweets/2
{
"_ttl" : "5000",
"user" : "Romonov",
"TestField" : "TestData2"
}
PUT /twitters/tweetsy/1?ttl=5000
{
"user" : "Romonov",
"TestField" : "TestData1"
}
以上各項均無效,並且5秒鍾后仍可見文檔。 我還嘗試在該索引上創建任何文檔之前設置enable _ttl:
PUT /twig/twigsy/_mapping?pretty
{
"user" : {"_ttl": {"enabled": true}}
}
在哪里,我還沒有將任何文檔放在索引樹枝上。 但這返回一個錯誤:
{
"error": "IndexMissingException[[twig] missing]",
"status": 404
}
我用curl(在Windows機器上安裝了它)嘗試了同樣的方法,但是得到了同樣的錯誤:
C:\WINDOWS\system32>curl -XPUT "http://localhost:9200/facebook/fb/_mapping?pretty" -d "{ "user" : {"_ttl": {"enabled": true}}"
{
"error" : "IndexMissingException[[facebook] missing]",
"status" : 404
}
想知道我缺少什么。
TTL文檔對此進行了解釋:
過期的文檔將定期自動刪除。 您可以動態設置indexs.ttl.interval以適合您的需求。 默認值為60秒。
因此,僅在下一個到期任務運行時,才不會在達到TTL時立即刪除文檔。 您可以降低該作業的運行速度,但是這樣做會降低性能。
我可以通過做兩件事來使其工作:
1.將以下行添加到elasticsearch.yml文件中:
indices.ttl.interval: 7d
2.使用以下幾行在與elasticsearch.yml相同的位置創建一個default-mapping.json文檔:
{
_default_ : {
"_ttl" : {
"enabled" : true, "default" : "7d"
}
}
}
完成這兩項操作后創建的所有新群集均已將ttl啟用為7天。 根據我的觀察,到目前為止,它適用於在這些新集群上創建的所有索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.