How to make elasticsearch document ttl work?
12,343
Solution 1
Here is what works for 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
Solution 2
@bereal is right.
For ttl to work, you have to enable it first in mapping (by default, it's disabled), and then set the TTL value when indexing documents.
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'
For more information, please reference
- http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-ttl-field.html
- http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-index_.html#index-ttl
Author by
Archibald
Updated on June 17, 2022Comments
-
Archibald almost 2 years
I installed debian package
I am able to push data using curl:
curl -XPUT 'http://mybox:9200/blog/user/dilbert' -d '{ "name": "Dilbert Brown" }'
And fetch it
curl -XGET 'http://mybox:9200/blog/user/dilbert'
result:
{ "_index": "blog", "_type": "user", "_id": "dilbert", "_version": 2, "exists": true, "_source": { "name": "Dilbert Brown" } }
And find it with
curl -XGET 'http://mybox:9200/blog/user/_search?q=name:Dilbert+Brown&pretty=True'
I want to push the same record with ttl of 5 seconds and 5 seconds later get 404 http status code when trying to fetch this entry. Also the entry should not be visible in search results.
NOTE: I tried various combinations of search configurations from
- http://www.elasticsearch.org/guide/reference/mapping/ttl-field/
- http://www.elasticsearch.org/guide/reference/api/index_/
- http://elasticsearch-users.115913.n3.nabble.com/TTL-in-elastic-search-is-not-working-td4034844.html
None of them helped me out.
Can somebody mention a simple sequence of steps that would let me achieve the targeted outcome?