2013-06-04 6 views
6

Ich installierte debian packageWie macht man elasticsearch document ttl arbeiten?

Ich bin der Lage, Daten zu schieben curl mit:

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

Und holt es

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

Ergebnis:

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

Und finden Sie es mit

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

Ich möchte den gleichen Datensatz mit ttl von 5 Sekunden und 5 Sekunden später bekommen 404 HTTP-Statuscode beim Versuch, diesen Eintrag zu holen. Auch der Eintrag sollte in den Suchergebnissen nicht sichtbar sein.

HINWEIS: I verschiedene Kombinationen von Suchkonfigurationen versuchte von

Keiner von ihnen half mir aus.

Kann jemand eine einfache Abfolge von Schritten erwähnen, die mir erlauben würden, das angestrebte Ergebnis zu erreichen?

+0

Was sagt es Ihnen, wenn Sie "? Ttl = 5000" in "PUT" definieren und dann versuchen, es später? – bereal

Antwort

11

Hier ist, was für mich funktioniert:

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 richtig ist.

Damit ttl funktioniert, müssen Sie es zunächst beim Zuordnen aktivieren (standardmäßig ist es deaktiviert) und dann den TTL-Wert beim Indizieren von Dokumenten festlegen.

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' 

Für weitere Informationen verweisen bitte

+1

Ich glaube, das sollte _ttl am 2. put sein. Dies entspricht dem 2. Link, den Sie angegeben haben. – bwight

+0

Ja, mein Fehler, danke. – Daniel

0

nehmen Bitte beachten Sie, dass Sie nur TTL-Einstellung kann während der neue Zuordnung (Typ) erstellen. Sie können es nach dem Erstellen nicht aktivieren. Ich habe es bereits nach der Produktfreigabe versucht, aber es geht nicht. Also muss ich Code aktualisieren, um den neuen zu verwenden, der mit TTL enable erstellt hat. Weitere Informationen kann ich hier sehen: http://grokbase.com/t/gg/elasticsearch/132v5y0w11/problem-with-ttl