关键字或日期类型字段的范围查询?

时间:2016-11-06 00:41:46

标签: elasticsearch

我有一个存储插入时间的字段,例如2016-10-10 11:00:00.000,我尝试了keyword类型和date类型,它们都满足range要求,例如

{
    "query": {
        "range" : {
            "time" : {
                "gte" : "2016-10-10 11:00:00.000",
                "lte" : "2016-10-10 12:00:00.000"
            }
        }
    }
}

keyworddate类型哪个更好?

1 个答案:

答案 0 :(得分:3)

在您的情况下,由于您要存储日期,确实更适合使用date数据类型。在内部,这些日期将存储为long时间戳,范围查询将在其上运行,因此您有数值范围

keyword旨在用于字符串数据。如果您将这些日期存储为关键字,则您的日期将存储为未分析的字符串,并且将在其上运行的范围查询将其视为词汇范围

如果您需要在这些日期之外创建date_histogram汇总,keyword类型将无法执行此操作。所以你绝对应该选择date数据类型。