簡體   English   中英

Elasticsearch文檔TTL無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM