[英]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_dt
和submit_dt
定義為映射中的date
。 在這里,您使用了一個不正確的long
類型來處理日期。
附帶說明的是,在這種情況下,應使用filter
而不是must
使用。 IMO會更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.