我正在尝试使用ElasticSearch实现过滤器我只是想实现范围过滤器我有以下数据:
{
"result": [
{
"Id": "144039",
"posted_dt": 1506951883637,
"submit_dt": 1507609800000,
"title": "Request for Information (RFI) # 306-18-0018",
"fname": "RODRI",
"email": "",
"desc": "dummy Text"
}
]
}
我想获取最近3天或5天的数据我正在使用它:
query = {
"bool": {
"must": [
{
"range" : {
"posted_dt" : {
"gte" : "now-3d/d",
"lt" : "now/d"
}
}
} ]
}
}
我对posting_dt的映射是:
"posted_dt": {
"type": "long"
},
我也尝试了过滤器,但没有成功。
请帮忙。
由于
Randheer
答案 0 :(得分:1)
"posted_dt"
字段的映射不正确。您打算以毫秒为单位存储以纪元为单位的日期,但是您将其存储为长类型。所以日期范围过滤器不能用于长数据类型。更新您的"posted_dt"
字段的映射,例如:
PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"posted_dt": {
"type": "date",
"format": "epoch_millis"
}
}
}
}
}
请参阅Elasticsearch中的Date datatype。
答案 1 :(得分:0)
首先,您需要分享您的映射。实际上,请确保映射中posted_dt
和submit_dt
被定义为date
。在这里,您使用long
处理日期不正确。
附注是,在您的情况下,您应该使用filter
而不是must
。 IMO会更快。