关键字或日期类型字段的范围查询?
问题描述:
{
"query": {
"range" : {
"time" : {
"gte" : "2016-10-10 11:00:00.000",
"lte" : "2016-10-10 12:00:00.000"
}
}
}
}
keyword
和date
式哪个更好哪个存储插入时间的字段,如2016-10-10 11:00:00.000
,我试过keyword
类型和date
类型,它们都符合range
的要求,这样的?
答
对于您的情况,由于您正在存储日期,所以确实使用date
数据类型更合适。在内部,这些日期将被存储为long
时间戳,并且范围查询将在其上运行,以便您有一个数字范围。
keyword
旨在用于字符串数据。如果您将这些日期存储为关键字,那么您的日期将被存储为未分析的字符串,并且将在其上运行的范围查询将其视为词法范围。
如果您需要在这些日期之外创建date_histogram
汇总,则keyword
类型将不会执行此操作。所以你应该更喜欢date
数据类型。