6

我安装了debian包

我可以使用 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 状态代码。此外,该条目不应在搜索结果中可见。

注意:我尝试了各种搜索配置组合

他们都没有帮助我。

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

4

3 回答 3

12

这对我有用:

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
于 2013-06-06T05:22:15.167 回答
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'

更多信息,请参考

于 2014-02-22T00:55:19.440 回答
0

请注意,您只能在创建新映射(类型)期间设置 TTL。创建后无法启用。我已经尝试了很多方法来在产品发布后启用它,但不能。所以我必须更新代码以使用启用 TTL 创建的新代码。有关更多信息,我可以在这里查看:http: //grokbase.com/t/gg/elasticsearch/132v5y0w11/problem-with-ttl

于 2014-04-14T07:41:10.087 回答