2013-06-04 64 views
6

我安裝debian package如何使elasticsearch文件ttl工作?

我可以使用curl將數據推:用

{ 
    "_index": "blog", 
    "_type": "user", 
    "_id": "dilbert", 
    "_version": 2, 
    "exists": true, 
    "_source": { 
    "name": "Dilbert Brown" 
    } 
} 

,並發現它:

curl -XPUT 'http://mybox:9200/blog/user/dilbert' -d '{ 
    "name": "Dilbert Brown" 
}' 

拿去

curl -XGET 'http://mybox:9200/blog/user/dilbert' 

結果

curl -XGET 'http://mybox:9200/blog/user/_search?q=name:Dilbert+Brown&pretty=True' 

我想用5秒的ttl推送相同的記錄,5秒鐘後嘗試獲取此條目時獲取404 http狀態碼。此外,該條目不應在搜索結果中可見。

注:我嘗試搜索配置的各種組合,從

他們都沒有幫我擺脫困境。

有人可以提到一個簡單的步驟序列,可以讓我達到目標結果嗎?

+0

當你在'PUT'中定義'?ttl = 5000'時,它告訴你什麼,然後嘗試'GET'? – bereal

回答

11

這裏對我來說是什麼工作:

curl -XPUT 'http://localhost:9200/blog/user/_mapping' -d '{"user": {"_ttl": {"enabled": true, "default": 5000}}}' 

curl -XPUT 'http://localhost:9200/blog/user/phb' -d '{"name" : "Pointy-Haired Boss"}' 

sleep 60 # this is the default deletion interval for the expired documents 

curl -XGET http://localhost:9200/blog/user/phb # 404 
7

@bereal是正確的。

對於ttl的工作,您必須首先在映射中啓用它(默認情況下,它已禁用),然後在索引文檔時設置TTL值。

curl -XPUT 'mybox:9200/blog/user/_mapping?pretty' -d '{ 
    "user": { 
    "_ttl": {"enabled": true} 
}' 

curl -XPUT 'mybox:9200/blog/user/dilbert' -d '{ "name" : "Dilbert Brown", "_ttl": "3m"}' 

curl -XGET 'mybox:9200/blog/user/dilbert?pretty' 

欲瞭解更多信息,請參考

+1

我相信這應該是_ttl在第二位。這與您提供的第二個鏈接相符。 – bwight

+0

是的,我的錯誤,謝謝。 – Daniel

0

請大家注意,您只能設置TTL過程中創建新的映射(類型)。創建後無法啓用它。我已經嘗試了很多方式在產品發佈後啓用它,但不能。所以我必須更新代碼才能使用使用TTL啓用創建的新代碼。 欲瞭解更多信息,請看: http://grokbase.com/t/gg/elasticsearch/132v5y0w11/problem-with-ttl