2014-09-29 58 views
1

我正在使用elastic4s來實現彈性搜索。我正在嘗試啓用ttl,但我無法弄清楚它是如何實現的?我的意思是啓用_ttl將是真實的,但在代碼中,我應該如何實現它?我使用的是最新版本1.3.2 elastic4s使用elastic4s在scala中啓用ttl

回答

1

如果你已經啓用了它,當你需要的是索引文檔時,喜歡把它作爲一個字段:

index into "documents/doc" fields (
    "title" -> document.title, 
    "description" -> document.description, 
    "_ttl" -> 30.minutes.toMillis // TTL should be passed as milliseconds number 
) 

UPD:此外,還有是特殊的DSL支持彈性4s爲ttl:

index into "documents/doc" ttl 30.minutes.toMillis fields (
    "title" -> document.title, 
    "description" -> document.description 
) 
+0

謝謝你的答案。因此,在您的示例中,該條目將在30分鐘後自動刪除。是這樣嗎?我只是用5秒或1分鐘嘗試它,並且在ttl時間過後它不刪除它? – igalbenardete 2014-09-30 08:31:45

+0

它的TTL等於30分鐘,但有一些問題:elasticsearch在到期後不會立即刪除它。彈性搜索刪除它們有一定的時間間隔,請參閱http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-ttl-field.html – alno 2014-09-30 10:24:55

+0

中的最後一段。另外,在elastic4s 1.4.9之後,你可以爲ttl使用正常的scala持續時間,例如'client.execute {索引到「電子/電話」字段「供應商」 - >「黑莓」ttl 1.second } – monkjack 2015-01-16 02:59:07