我的弹性搜索有数据,尤其是日期的数据:
{
"startTime": {
"type": "string",
"format": "yyyy/MM/dd",
"index": "analyzed",
"analyzer": "keyword"
}
}
我正在添加一个date range picker,并希望使用所选日期来查询elasticsearch以查找所选范围内的startTime数据。我不确定如何将此查询结构化为elasticsearch,或者它是否可以使用这是一个字符串字段(我可能会改变它)。
任何人都可以帮助我吗?
答案 0 :(得分:7)
您的字段是字符串,格式属性将被忽略。您应该更改映射并使用date
类型。看看here,看看elasticsearch中可用的核心类型。
我会使用过滤器而不是查询。它将被缓存,因此更快。以下是过去7天的示例:
{
"filter" : {
"range" : {
"PublishTime" : {
"from" : "20130505T000000",
"to" : "20131105T235959"
}
}
}
}
请注意,如果您使用这样的过滤器,那么整天都会使用相同的过滤器,因此您可以充分利用缓存。