簡體   English   中英

如何在ElasticSearch中使用過濾器?

[英]how to use filter in ElasticSearch?

我正在嘗試使用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"
            }
        }
    } ]    
}

}

我對postd_dt的映射是:

"posted_dt": {
            "type": "long"
          },

我也嘗試過過濾器,但沒有成功。

請幫忙。

謝謝

Randheer

您對"posted_dt"字段的映射不正確。 您打算存儲以毫秒為單位的日期,但您將其存儲為long類型。 因此,日期范圍過濾器不適用於長數據類型。 更新您的"posted_dt"字段的映射,如下所示:

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "posted_dt": {
          "type":   "date",
          "format": "epoch_millis"
        }
      }
    }
  }
}

請參閱Elasticsearch中的Date數據類型

首先,您需要共享您的映射。 實際上,請確保已將posted_dtsubmit_dt定義為映射中的date 在這里,您使用了一個不正確的long類型來處理日期。

附帶說明的是,在這種情況下,應使用filter而不是must使用。 IMO會更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM