2016-07-26 27 views
0

0 Ich habe index und doc in erstellt. Fügen Sie das Mapping für das Dokument hinzu.elasticsearch nicht zurück ttl in Feldern, wenn nicht in Zuordnungen

curl http://localhost:9200/test -X POST 
{"acknowledged":true} 

curl http://localhost:9200/test/student_doc/_mappings -X PUT -d '{ 
    "student_doc" : { 
    "properties" : { 
     "name" : { 
     "properties" : { 
      "student_id" : { 
      "type" : "string" 
      }, 
      "tags": { 
      "type" : "string" 
      } 
     } 
     } 
    } 
    } 
}' 
{"acknowledged":true} 

Als ich doc erstellen, gab ich ttl für den Dok.

curl http://localhost:9200/test/student_doc/4?ttl=2500 -X PUT -d '{"student_id": "4", "tags": ["test"]}' -H 'Content-type: application/json' 
{"_index":"test","_type":"student_doc","_id":"4","_version":1,"created":true}' 

Wenn ich versuche, den ttl in fields

curl http://localhost:9200/test/_search?pretty -X POST -d '{"fields": ["_ttl"]}' 
{ 
    "took" : 1, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 1, 
    "max_score" : 1.0, 
    "hits" : [ { 
     "_index" : "test", 
     "_type" : "student_doc", 
     "_id" : "4", 
     "_score" : 1.0 
    } ] 
    } 
} 

ermogliche ttl in Index mit neuen Zuordnungen zu erhalten.

curl http://localhost:9200/test/student_doc/_mappings -X PUT -d '{ 
    "student_doc" : { 
    "_ttl": {"enabled": true}, 
    "properties" : { 
     "name" : { 
     "properties" : { 
      "student_id" : { 
      "type" : "string" 
      }, 
      "tags": { 
      "type" : "string" 
      } 
     } 
     } 
    } 
    } 
}' 

Fügen Sie dann einen neuen Datensatz hinzu.

curl "http://localhost:9200/test/student_doc/5?ttl=2500&pretty" -X PUT -d '{"student_id": "5", "tags": ["test"]}' -H 'Content-type: application/json' 
{ 
    "_index" : "test", 
    "_type" : "student_doc", 
    "_id" : "5", 
    "_version" : 1, 
    "created" : true 
} 

Und versuchen ttl wieder zu bekommen und es die ttl in Feldern zurückgibt.

curl http://localhost:9200/test/_search?pretty -X POST -d '{"fields": ["_ttl"]}' 
{ 
    "took" : 1, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 2, 
    "max_score" : 1.0, 
    "hits" : [ { 
     "_index" : "test", 
     "_type" : "student_doc", 
     "_id" : "4", 
     "_score" : 1.0 
    }, { 
     "_index" : "test", 
     "_type" : "student_doc", 
     "_id" : "5", 
     "_score" : 1.0, 
     "fields" : { 
     "_ttl" : -420 
     } 
    } ] 
    } 
} 

Es ist Pflicht, aktiviert ttl in Mappings, um es in dem Dokument vorgenommen werden?

+0

Ja, '_ttl' ist nicht standardmäßig aktiviert, daher müssen Sie es aktivieren, damit TTL funktioniert. Dies wirkt sich jedoch nicht auf bereits erstellte Dokumente aus. – Val

+0

@Val, wenn es nicht in der Lage ist, 'ttl' zu setzen, dann' PUT' Aufruf sollte Fehler auslösen? Weil ich "created: true" bekomme, dann nehme ich an, dass es alle meine Werte braucht, gibt es eine Möglichkeit, das zu definieren, wenn etwas nicht funktioniert, lass es mich wissen. – Nilesh

+0

Der 'ttl' Parameter wird stillschweigend ignoriert, wenn '_ttl' nicht aktiviert ist, Sie erhalten dadurch keinen Fehler. Es gehört zu Ihrer Aufgabe, Ihre Zuordnungen zu kennen und ob Sie TTL aktiviert haben oder nicht. – Val

Antwort

1

Ja, _ttl ist standardmäßig nicht aktiviert. Daher müssen Sie es aktivieren, damit TTL funktioniert. Dies wirkt sich jedoch nicht auf bereits erstellte Dokumente aus.

Beachten Sie, dass der Parameter ttl unbeaufsichtigt ignoriert wird, wenn _ttl in Ihrem Mapping nicht aktiviert ist. Dadurch treten keine Fehler auf. Es gehört zu Ihrer Aufgabe, Ihre Zuordnungen zu kennen und ob Sie TTL aktiviert haben oder nicht.

Sie können _ttl jederzeit aktivieren, deshalb sollten Sie die Arbeit nur dann aktivieren, wenn es benötigt wird.