2013-06-04 16 views
6

Ho installato debian packageCome far funzionare il documento elasticsearch ttl?

sono in grado di spingere i dati utilizzando ricciolo:

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

E prenderlo

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

risultato:

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

E trovare con

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

Voglio spingere lo stesso record con TTL di 5 secondi e 5 secondi dopo ottenere il codice di stato HTTP 404 quando si tenta di recuperare questa voce. Anche la voce non dovrebbe essere visibile nei risultati di ricerca.

NOTA: ho provato varie combinazioni di configurazioni di ricerca da

Nessuno di loro mi ha aiutato.

Qualcuno può menzionare una semplice sequenza di passaggi che mi consenta di raggiungere il risultato desiderato?

+0

Che cosa ti ha detto quando si definiscono 'TTL = 5000' in' PUT' e quindi provare 'GET'ting in un secondo momento? – bereal

risposta

11

Ecco ciò che funziona per me:

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 è giusto.

Perché ttl funzioni, è necessario abilitarlo prima nella mappatura (per impostazione predefinita, è disabilitato) e quindi impostare il valore TTL durante l'indicizzazione dei documenti.

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' 

Per ulteriori informazioni, si prega di riferimento

+1

Credo che questo dovrebbe essere _ttl al 2 ° put. Questo è in accordo con il 2 ° link che hai fornito. – bwight

+0

Sì, mio ​​errore, grazie. – Daniel

0

prega di prendere atto che si può solo impostare TTL durante creare nuova mappatura (tipo). Non è possibile abilitarlo dopo la creazione. Ho già provato molti modi per abilitarlo dopo l'uscita del prodotto, ma non ci riesco. In modo che io debba aggiornare il codice per utilizzare quello nuovo che è stato creato con l'abilitazione TTL. Per ulteriori informazioni, posso vedere qui:? http://grokbase.com/t/gg/elasticsearch/132v5y0w11/problem-with-ttl