2014-11-06 27 views
9

Tôi có truy vấn sau đây:ElasticSearch phạm vi ngày

{ 
    "query": { 
    "query_string": { 
     "query": "searchTerm", 
     "default_operator": "AND" 
     } 
    }, 
    "facets": { 
     "counts": { 
     "date_histogram": { 
     "field": "firstdate", 
     "interval": "hour" 
     } 
    } 
} 

và tôi muốn thêm một phạm vi ngày với nó, để lấy giá trị cho các firstdate lĩnh vực mà nằm trong một cụ thể từ/đến khoảng thời gian. Bất kỳ đề xuất về cách làm điều đó? Cảm ơn nhiều!

Trả lời

11

bạn chỉ cần thêm một bộ lọc range để truy vấn của bạn:

{ 
"query":{ 
    "filtered": { 
    "query": { 
     "query_string": {"query": "searchTerm", "default_operator": "AND" } 
    }, 
     "filter" : { 
     "range": {"firstdate": {"gte": "2014-10-21T20:03:12.963","lte": "2014-11-24T20:03:12.963"}} 
    } 
    } 
}, 
"facets": { 
"counts": { 
    "date_histogram": { 
     "field": "firstdate", 
     "interval": "hour" 
     } 
    } 
    } 
} 
10

Boolean truy vấn sẽ làm việc quá,

{ 
    "query" :{ 
     "bool" : {    
      "must" : { 
       "range": {"firstdate": {"gte": "2014-10-21T20:03:12.963","lte": "2014-11-24T20:03:12.963"}} 
      }, 

      "must" : { 
      "query_string": { 
       "query": "searchTerm", 
       "default_operator": "AND" 
      } 
      } 

     } 
    }, 

    "facets": { 
     "counts": { 
      "date_histogram": { 
      "field": "firstdate", 
      "interval": "hour" 
      } 
     } 
    } 

} 
+0

đâu là ' "firstdate"' đến từ đâu? Nó không có trong tài liệu. –

+0

@Daniel_L, đó chỉ là ví dụ. Xin lỗi nếu tôi nhầm bạn. –

+0

'firstdate' có thể rất giống với' @ timestamp'. Nó khác nhau theo chỉ mục –

Các vấn đề liên quan