我安装了debian package
我可以使用curl来推送数据:
curl -XPUT 'http://mybox:9200/blog/user/dilbert' -d '{
"name": "Dilbert Brown"
}'
获取它
curl -XGET 'http://mybox:9200/blog/user/dilbert'
结果:
{
"_index": "blog",
"_type": "user",
"_id": "dilbert",
"_version": 2,
"exists": true,
"_source": {
"name": "Dilbert Brown"
}
}
用
找到它curl -XGET 'http://mybox:9200/blog/user/_search?q=name:Dilbert+Brown&pretty=True'
我想用5秒的ttl推送相同的记录,5秒后尝试获取此条目时获取404 http状态代码。此条目也不应在搜索结果中显示。
注意:我尝试了
的各种搜索配置组合他们都没有帮助我。
有人可以提到一个简单的步骤,让我实现目标结果吗?
答案 0 :(得分:11)
这对我有用:
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
答案 1 :(得分:7)
@bereal是对的。
要使ttl正常工作,必须先在映射中启用它(默认情况下禁用它),然后在索引文档时设置TTL值。
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'
有关详细信息,请参阅
答案 2 :(得分:0)
请注意,您只能在创建新映射(类型)期间设置TTL。创建后无法启用它。我已经尝试过许多方法在产品发布后启用它,但不能。所以我必须更新代码以使用通过TTL启用创建的新代码。 有关更多信息,我可以在这里看到: http://grokbase.com/t/gg/elasticsearch/132v5y0w11/problem-with-ttl