2017-10-13 81 views
0

下面是我的代碼,它抓取數據並將數據轉換爲CSV文件(這是工作)。我試圖只關注當前日期返回的數據。如何抓取當前日期的數據 - Python

有人可以告訴我這是怎麼做的,DTDT是日期。 我的代碼:

from elasticsearch import Elasticsearch 
import csv 

es = Elasticsearch(["9200"]) 

# Replace the following Query with your own Elastic Search Query 
res = es.search(index="search", body= 
       { 
        "_source": ["DTDT", "TRDT", "SPLE", "RPLE"], 
        "query": { 
         "bool": { 
          "should": [ 
           {"wildcard": {"CN": "TEST*"}} 

          ] 
         } 
        } 
}, size=10) 



header_names = { 'DTDT': 'DATE', 'TRDT': 'TIME', ...} 

with open('mycsvfile.csv', 'w') as f: # Just use 'w' mode in 3.x 
    header_present = False 
    for doc in res['hits']['hits']: 
     my_dict = doc['_source'] 
     if not header_present: 
      w = csv.DictWriter(f, my_dict.keys()) 
      w.writerow(header_names) # will write DATE, TIME, ... in correct place 
      header_present = True 


     w.writerow(my_dict) 

例如,我只想從午夜返回數據,直到下午2時(使用當前日期)。

回答

0

您可以使用範圍過濾器做到這一點:

{ 
    "_source": [ 
    "DTDT", 
    "TRDT", 
    "SPLE", 
    "RPLE" 
    ], 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "wildcard": { 
      "CN": "TEST*" 
      } 
     } 
     ], 
     "must": [ 
     { 
      "range": { 
      "DTDT": { 
       "gte": "now/d", 
       "lte": "now+1d/d" 
      } 
      } 
     } 
     ] 
    } 
    } 
} 

*編輯,以範圍與舍入當前日曆天,而不是過去的24小時。

+0

嗨邁克,它現在只抓取當前日期的數據,但是,通配符不再工作。它抓住了所有的用戶,而不僅僅是那些用名字進行測試的用戶。 – Rich