如何使elasticsearch文件工作?

时间:2013-06-04 09:58:02

标签: elasticsearch ttl

我安装了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状态代码。此条目也不应在搜索结果中显示。

注意:我尝试了

的各种搜索配置组合

他们都没有帮助我。

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

3 个答案:

答案 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