2013-06-16 14 views
20

Chuyên gia về Elasticsearch,Làm thế nào để làm cho elasticsearch thêm trường dấu thời gian vào mọi tài liệu trong tất cả các chỉ mục?

Tôi không thể tìm ra cách đơn giản để chỉ cho ElasticSearch chèn trường _timestamp cho tất cả các tài liệu được thêm vào trong tất cả các chỉ mục (và tất cả các loại tài liệu).

tôi xem ví dụ với nhiều loại cụ thể: http://www.elasticsearch.org/guide/reference/mapping/timestamp-field/

và cũng xem ví dụ cho tất cả các chỉ số cho một loại cụ thể (sử dụng _all): http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping/

nhưng tôi không thể tìm thấy bất kỳ tài liệu hướng dẫn về việc bổ sung nó bằng cách mặc định cho tất cả các tài liệu được thêm vào bất kể chỉ mục và loại.

+0

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

Trả lời

26

Bạn có thể làm điều này bằng cách cung cấp nó khi tạo chỉ mục của mình.

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

Điều đó sau đó sẽ tự động tạo một _timestamp cho tất cả mọi thứ bạn đưa vào chỉ mục. Sau đó, sau khi lập chỉ mục một cái gì đó khi yêu cầu trường _timestamp, nó sẽ được trả về.

+0

Điều này hiệu quả. Cảm ơn Marcus. Tôi lấy nó mà bạn không thể xác định điều này như là một thiết lập toàn cầu cho tất cả các chỉ số đó là ok. Đối với bất cứ ai muốn thử điều này bằng cách sử dụng plug-in elasticsearch đầu, hãy chắc chắn rằng bạn chỉ định yêu cầu POST và không GET. –

+0

@Marcus - Tôi đã thử điều này. Tôi không thể nhìn thấy _timestamp trong visualization Kibana3 của tôi giống như cách tôi thấy _id, _index và _type. Bất kỳ ý tưởng tại sao đó là? – liv2hak

+1

Hãy nhớ rằng _timestamp phải được yêu cầu như một trường cho nó được trả lại khi truy vấn. Thêm {"trường": "_ dấu thời gian"}. –

6

Elasticsearch sử dụng để hỗ trợ tự động thêm timestamps để tài liệu được lập chỉ mục, nhưng deprecated this feature trong 2.0.0

Từ gần đây nhất (5.x) documentation:

Các trường _timestamp và _ttl đã bị phản đối và hiện đã bị xóa. Để thay thế cho _timestamp, bạn nên điền vào một trường ngày thông thường với dấu thời gian hiện tại ở bên ứng dụng.

Các vấn đề liên quan