2013-06-04 12 views
6

zainstalowałem debian packageJak wykonać dokument ttl elasticsearch?

jestem w stanie przesyłać dane za pomocą Zwijanie:

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

i przynieś go

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

Wynik:

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

A znaleźć ją

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

Chcę przesłać ten sam rekord z ttl 5 sekund i 5 sekund później uzyskać kod statusu HTTP 404 podczas próby pobrania tego wpisu. Również wpis nie powinien być widoczny w wynikach wyszukiwania.

UWAGA: Próbowałem różnych kombinacji konfiguracji wyszukiwania z

żaden z nich nie pomógł mi.

Czy ktoś może wymienić prostą sekwencję czynności, która pozwoli mi osiągnąć zamierzony rezultat?

+0

Co ci powiedzieć, kiedy zdefiniujesz '? Ttl = 5000' w' PUT', a następnie spróbuj 'GET? Później? – bereal

Odpowiedz

11

Oto, co działa dla mnie:

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 ma rację.

Aby ttl działał, należy go najpierw włączyć w mapowaniu (domyślnie jest wyłączony), a następnie ustawić wartość TTL podczas indeksowania dokumentów.

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' 

Aby uzyskać więcej informacji, proszę odwołać

+1

Wierzę, że to powinno być _ttl na drugim miejscu. Jest to zgodne z drugim linkiem, który podałeś. – bwight

+0

Tak, mój błąd, dziękuję. – Daniel

0

Proszę zwrócić uwagę, że można tylko ustawienie TTL podczas tworzenia nowego mapowania (typ). Nie można go włączyć po utworzeniu. Próbowałem już wiele sposobów, aby włączyć go po wydaniu produktu, ale nie mogę. Tak więc muszę zaktualizować kod, aby użyć nowego, który został stworzony z włączonym TTL. Aby uzyskać więcej informacji, widzę tutaj: http://grokbase.com/t/gg/elasticsearch/132v5y0w11/problem-with-ttl

Powiązane problemy