Я пытаюсь сохранить миллисекунды с UNIX EPOCH в поле даты в elasticsearch. Это должно быть возможно, как указано в онлайн-руководстве:Агрегация по дате, где значение даты хранилось в миллисекундах
Тип даты также будет принимать длинное число, обозначающее UTC миллисекунды с эпохи, независимо от формата, который он может обрабатывать. http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-core-types.html:
Причина этого заключается в том, что у меня есть набор файлов, для которых версия является также отметка, что они были созданы. Поэтому я определил следующий индекс и отображение (пример):
curl -XPUT 'http://localhost:9200/datastore'`
curl -XPUT 'http://localhost:9200/datastore/_mapping/files' -d '
{
"files" : {
"properties" : {
"version" : {
"type" : "date"
}
}
}
}'
После хранения миллисекунд следующим образом:
curl -XPOST 'http://localhost:9200/datastore/files' -d '{
"version": "0"
}'
я получить поле с нормальным запросом, он возвращается в порядке:
curl -XGET "http://127.0.0.1:9200/datastore/_search?pretty" -d '{
"fields" : ["version"]
}'
Ответ:
{
"took" : 3,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [ {
"_index" : "datastore",
"_type" : "files",
"_id" : "AUwHnaoalv87gaUunUaf",
"_score" : 1.0,
"fields" : {
"version" : [ "0" ]
}
} ]
}
}
Однако, когда я пытаюсь объединить на поле, значение теперь вдруг интерпретируется как миллисекунды от года 0. другого значения возвращается в качестве ключа для каждого из бункеров:
curl -XGET "http://localhost:9200/datastore/_search?pretty" -d '{
"aggs": {
"uniqueVersions": {
"terms": {
"field": "version"
}
}
}
}'
Ответ:
{
"took" : 93,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [ {
"_index" : "datastore",
"_type" : "files",
"_id" : "AUwHnaoalv87gaUunUaf",
"_score" : 1.0,
"_source":{
"version": "0"
}
} ]
},
"aggregations" : {
"uniqueVersions" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : -62167219200000,
"key_as_string" : "0000-01-01T00:00:00.000Z",
"doc_count" : 1
} ]
}
}
}
Как вы видите, ключ теперь является фактическим нулем года. Я хотел бы знать, почему это так, так как я ожидал «0» в качестве ключа ведра.