В 1.X Elasticsearch мы организовали _ttl следующим образом:
В отображении у нас было:
{
"_ttl" : {
"enabled" : true,
"default" : "30d"},
"_timestamp" : {
"enabled" : true,
"path" : "@ts",
"format" : "dateOptionalTime"}
}
И это означало, что срок действия данного документа должен истечь через 30 дней с момента, указанного в @ts
поле. В настоящее время в Elasticsearch 2.0 _timestamp
Поле не может иметь поле «путь» и устарело, поэтому я не могу использовать этот метод, чтобы сообщить Elasticsearch, когда истекает срок действия данного документа.
Так что я все еще могу использовать _ttl
30d в отображении индекса, но тогда срок действия документа истекает через 30 дней после индексации, и если я хочу, чтобы он истек через 30 дней со времени, как в @ts
Затем нужно вычислить относительное время из индексации и добавить его в качестве параметра get HTTP-запроса:
PUT my_index/my_type/1?ttl=10m
{
"text": "Will expire in 10 minutes"}
Итак, мой вопрос, как я могу выразить это с точки зрения драйвера PHP Elasticsearch?
$params = [
'index' => 'my_index',
'type' => 'my_type',
'id' => 'my_id',
'body' => ['testField' => 'abc']
];
$response = $client->index($params);
Задача ещё не решена.
Других решений пока нет …