2013-06-04 43 views
6

我安装debian package如何使elasticsearch文件ttl工作?

我可以使用curl将数据推:用

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

,并发现它:

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

拿去

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

结果

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

我想用5秒的ttl推送相同的记录,5秒钟后尝试获取此条目时获取404 http状态码。此外,该条目不应在搜索结果中可见。

注:我尝试搜索配置的各种组合,从

他们都没有帮我摆脱困境。

有人可以提到一个简单的步骤序列,可以让我达到目标结果吗?

+0

当你在'PUT'中定义'?ttl = 5000'时,它告诉你什么,然后尝试'GET'? – bereal

回答

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 
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' 

欲了解更多信息,请参考

+1

我相信这应该是_ttl在第二位。这与您提供的第二个链接相符。 – bwight

+0

是的,我的错误,谢谢。 – Daniel

0

请大家注意,您只能设置TTL过程中创建新的映射(类型)。创建后无法启用它。我已经尝试了很多方式在产品发布后启用它,但不能。所以我必须更新代码才能使用使用TTL启用创建的新代码。 欲了解更多信息,请看: http://grokbase.com/t/gg/elasticsearch/132v5y0w11/problem-with-ttl