2017-10-11 146 views
1

我試圖將使用以下查詢找到的結果導出到我的桌面上的CSV中。將Elasticsearch結果導出爲CSV文件

這是我第一次使用Elasticsearch和cURL,所以我很困惑如何做到這一點。

from elasticsearch import Elasticsearch 

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": "TEST1"}} 

          ] 
         } 
        } 
}, size=10) 

for doc in res['hits']['hits']: 
    print(doc) 

現在當我運行此查詢返回戴夫名字,姓氏,地址,性別,我想把結果到CSV我的桌面上,當我運行查詢。

我一直在閱讀關於如何做到這一點,但林不知道如何讓我的查詢做此鏈接 - (https://docs.python.org/3/library/csv.html

會有人幫助,告訴我怎麼我的查詢轉換中導出CSV PLEASE !

感謝

輸出我得到的是 -

{'_index': 'search', '_type': 'trades', '_id': '179299804977823744', '_score': 1.0, '_source': {'DTDT': '20170928', 'SPLE': '1001', 'RPLE': '1001', 'TRDT': '2017-09-28 17:01:19'}} 
+0

能否請您給打印(DOC)的輸出?幾條線會做 –

+0

我發佈的查詢我編輯了一些代碼,如我正在尋找的。你需要原始代碼嗎?唯一的區別是列名。當輸出和原始代碼現在我已經更新了我原來的帖子。謝謝你看看。即時通訊努力將我的代碼轉換成CSV導出結果。 – Rich

+0

當您在上面的代碼並打印結果時,最後在for循環中,需要該輸出來瞭解數據如何到來。 –

回答

1

您可以使用CSV模塊寫入數據。

從您給出的輸出中,我假設您要將_source中的數據寫入csv文件。

代碼:

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": "TEST1"}} 

          ] 
         } 
        } 
}, size=10) 



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.writeheader() 
      header_present = True 


     w.writerow(my_dict) 
+0

你能告訴我如何用我的代碼添加你的代碼嗎? – Rich

+0

@Rich - 檢查更新 –

+0

我得到了很多錯誤 GET http:// 9200:9200/search/_search?size = 10 [status:N/A request:8.984s] Traceback(最近一次調用最後一次) : 對於res中的文件「C:\ Users \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ urllib3 \ util \ connection.py」,第60行,create_connection 012.zip ,端口,家族,socket.SOCK_STREAM): – Rich