0
我在努力理解_timestamp以及如何正確使用它。我正在存儲日誌數據,因此時間戳非常重要。我想能夠存儲時間戳並按範圍查詢它。每當我使用_timestamp這個名稱的字段時,當我查詢它時,我都無法得到任何結果。無論是使用ISO 8601文本格式還是以毫秒爲單位進行存儲和查詢,都會發生這種情況。有沒有人有這個工作的完整例子?索引和範圍查詢_timestamp數據
使用文本格式(FWIW,這是單元測試代碼作爲本地節點運行)時的測試代碼。
client.admin().indices().create(new CreateIndexRequest(indexName).mapping("log",
"{\"_timestamp\": {\"enabled\": true, \"store\": \"yes\"}}"));
client.prepareIndex(indexName, "log", auditEvent.getId().toString())
.setSource(jsonBuilder()
.startObject().
field("eventType", auditEvent.getEventType().toString()).
field("_timestamp", auditEvent.getEventTime().toString(ISODateTimeFormat.dateTime())).
field("userId", auditEvent.getUserId()).
endObject())
.execute()
.actionGet();
SearchResponse response = client.prepareSearch(indexNames.toArray(new String[] {})).setTypes("log")
.setQuery(
QueryBuilders.
boolQuery()
.must(QueryBuilders.fieldQuery("eventType", eventType))
.must(QueryBuilders.rangeQuery("_timestamp")
.from(interval.getStart().toString())
.to(interval.getEnd().toString())
)
)
.addField("_timestamp")
.execute().actionGet();
當我使用匹配完成相同的查詢時,我可以看到timestamp字段。
"hits" : {
"total" : 2,
"max_score" : 1.0,
"hits" : [ {
"_index" : "audit-events-2013-03-04",
"_type" : "log",
"_id" : "3d584830-8506-11e2-8365-24be05270b5c",
"_score" : 1.0,
"fields" : {
"_timestamp" : "2013-03-04T20:01:02.003Z"
}
}, {
"_index" : "audit-events-2013-03-04",
"_type" : "log",
"_id" : "e6e382e0-84f5-11e2-8365-24be05270b5c",
"_score" : 1.0,
"fields" : {
"_timestamp" : "2013-03-04T18:04:05.006Z"
}
} ]
我不理解什麼?