如何在ElasticSearch中使用过滤器?

时间:2017-10-05 11:31:01

标签: elasticsearch elastic-beanstalk elasticsearch-plugin

我正在尝试使用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

2 个答案:

答案 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_dtsubmit_dt被定义为date。在这里,您使用long处理日期不正确。

附注是,在您的情况下,您应该使用filter而不是must。 IMO会更快。