Elasticsearch документ TTL не работает

Я следую приведенным в документации примерам, чтобы добавить ttl для документов в asticsearch: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-index_.html

Используя инструмент Sense в Chrome, я попробовал следующее и ожидал, что документы исчезнут через 5 секунд:

PUT /twitter/tweets/2
{
    "_ttl" : "5000",
    "user" : "Romonov",
    "TestField" : "TestData2"
}

PUT /twitters/tweetsy/1?ttl=5000
{
    "user" : "Romonov",
    "TestField" : "TestData1"
}

Ничто из вышеперечисленного не работает, и документы все еще видны через 5 секунд. Я также попытался установить _ttl перед созданием любых документов по этому индексу:

PUT /twig/twigsy/_mapping?pretty
{
    "user" : {"_ttl": {"enabled": true}}
}

где, я еще не ставлю какие-либо документы на индексную веточку. Но это возвращается с ошибкой:

{
   "error": "IndexMissingException[[twig] missing]",
   "status": 404
}

Я попробовал то же самое с curl (установил его на моем компьютере с Windows), но получил ту же ошибку:

C:\WINDOWS\system32>curl -XPUT "http://localhost:9200/facebook/fb/_mapping?pretty" -d "{ "user" : {"_ttl": {"enabled": true}}"
{
  "error" : "IndexMissingException[[facebook] missing]",
  "status" : 404
}

Интересно, что мне не хватает.

2 ответа

Решение

Я мог заставить это работать, делая две вещи:
1. Добавьте эту строку в файл asticsearch.yml:

indices.ttl.interval: 7d

2. Создайте документ default-mapping.json в том же месте, что и asticsearch.yml, со следующими строками:

{
    _default_ : { 
        "_ttl" : { 
            "enabled" : true, "default" : "7d" 
            }
        }
}

Для всех новых кластеров, созданных после выполнения этих двух вещей, ttl включен на 7 дней. По моим наблюдениям до сих пор это относится ко всем индексам, созданным на этих новых кластерах.

Документация TTL объясняет это:

Истекшие документы будут автоматически удаляться регулярно. Вы можете динамически настроить indices.ttl.interval в соответствии с вашими потребностями. Значение по умолчанию составляет 60 с.

Таким образом, документы не удаляются сразу по достижении их TTL, а только при выполнении следующей задачи. Вы можете снизить скорость выполнения этого задания, но при этом производительность снижается.

Другие вопросы по тегам