2013-06-16 10 views
20

Eksperci z dziedziny Elasticsearch,Jak zrobić elastyczne wyszukiwanie dodać pole sygnatury czasowej do każdego dokumentu we wszystkich indeksach?

Nie mogłem znaleźć prostego sposobu, aby po prostu powiedzieć ElasticSearch, aby wstawił pole _timestamp dla wszystkich dokumentów dodawanych do wszystkich indeksów (i wszystkich typów dokumentów).

widzę przykład dla określonych typów: http://www.elasticsearch.org/guide/reference/mapping/timestamp-field/

a także zobaczyć przykładowe dla wszystkich indeksów dla określonego typu (używając _all): http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping/

ale jestem w stanie znaleźć żadnej dokumentacji na dodanie go przez domyślne dla wszystkich dokumentów dodawanych niezależnie od indeksu i typu.

+0

https://www.elastic.co/guide/en/elasticsearch/reference/1.4/indices-create-index.html –

Odpowiedz

26

Możesz to zrobić, podając go podczas tworzenia indeksu.

$curl -XPOST localhost:9200/test -d '{ 
"settings" : { 
    "number_of_shards" : 1 
}, 
"mappings" : { 
    "_default_":{ 
     "_timestamp" : { 
      "enabled" : true, 
      "store" : true 
     } 
    } 
    } 
}' 

To będzie następnie automatycznie utworzyć _timestamp dla wszystkich rzeczy, które można umieścić w indeksie. Następnie po zindeksowaniu czegoś podczas żądania pola _timestamp zostanie ono zwrócone.

+0

To zadziałało. Dzięki Marcus. Uważam, że nie można zdefiniować tego jako globalnego ustawienia dla wszystkich indeksów, które jest w porządku. Dla każdego, kto chce wypróbować to za pomocą wtyczki elasticsearch, upewnij się, że podajesz żądanie POST, a nie GET. –

+0

@ Marcus - Próbowałem tego. Nie widzę _timestamp w mojej wizualizacji Kibana3 w taki sam sposób, jak widzę _id, _index i _typ. Jakiś pomysł, dlaczego tak jest? – liv2hak

+1

Należy pamiętać, że _timestamp musi być żądane jako pole, które będzie zwracane podczas odpytywania. Dodaj {"fields": "_ timestamp"}. –

6

Elasticsearch wykorzystywane do wspierania automatycznego dodawania znaczników czasu do dokumentów są indeksowane, ale deprecated this feature w 2.0.0

Od najnowszego (5.x) documentation:

Pola _timestamp i _ttl były przestarzałe i są teraz usuwane. Jako zamiennik dla _timestamp, powinieneś wypełnić standardowe pole daty bieżącym znacznikiem czasu po stronie aplikacji.

Powiązane problemy