如何使用官方nodejs库为elasticsearch设置ttl?

时间:2015-09-01 23:39:50

标签: elasticsearch

所以我有一个现有的索引。我关闭它以更新设置,然后重新打开。

client.indices.putSettings({
    index: 'myindex',
    type: 'mytype',
    body: {
        '_ttl': {
            "enabled" : true,
            'default': '1m'
        }
    }
})
.then(function (result) {
    console.log('result', result)
})

然后我创建一个新文档来查看ttl是否实际工作但它不起作用。

我从索引中看到的

对我做错了什么的想法?

1 个答案:

答案 0 :(得分:1)

_ttl应直接在映射类型上设置,而不是在索引上设置,因此您要使用putMapping而不是putSettings

client.indices.putMapping({
    index: 'myindex',
    type: 'mytype',
    body: {
        'mytype': {
            '_ttl': {
                "enabled" : true,
                'default': '1m'
            }
        }
    }
})
.then(function (result) {
    console.log('result', result)
})

这相当于这个REST调用:

curl -XPUT 'http://localhost:9200/myindex/_mapping/mytype' -d '{
    "mytype": {
        "_ttl": {
             "enabled": true, "default": "1m"
        }
    }
}'