2016-03-12 63 views
0

我正在向elasticsearch發送查詢,並且在文檔中以未知的字段順序響應。 我該如何解決elsasticsearch在文檔中返回字段的順序? 我的意思是,我要送這個查詢:elasticsearch:在返回的文檔中定義字段的順序

{ 
"index": "my_index", 
"_source":{ 
      "includes" : ["field1","field2","field3","field14"] 
    }, 
"size": X, 
"body": { 
    "query": { 
     // stuff  
     } 
    } 
} 

,當它的響應,它給了我不是在良好的秩序的東西。 我最終希望將其轉換爲csv,並且想修復csv頭文件。 有事可做,所以我可以得到像 doc1:{「field1」,「field2」,「field3」,「field14」} doc2:{「field1」,「field2」,「field3」,「field14 「} ... 以與我的」_source「相同的順序?

感謝您的幫助。

回答

0

Elasticsearch中的文檔是一個JSON散列/映射,定義爲maps are unordered

解決此問題的一個解決方案是使用Logstash以便使用elasticsearch input從ES中提取文檔,並使用csv output以CSV格式輸出它們。這樣,您可以保證CSV文件中的字段與指定的順序完全相同。另一個好處是,您不必編寫自己的樣板代碼以從ES中提取並匯入CSV,Logstash爲您免費提供所有這些。

的Logstash配置將是這個樣子:

input { 
    elasticsearch { 
    hosts => "localhost" 
    query => '{ "query": { "match_all": {} } }' 
    size => 100 
    index => "my_index" 
    } 
} 
filter {} 
output { 
    csv { 
     fields => ["field1","field2","field3","field14"] 
     path => "/path/to/file.csv" 
    } 
} 
+0

瓦爾嗨。謝謝您的回答。我明白你的建議,但我不想僅爲訂購字段安裝logstash。我不能相信有沒有一種原生的方式來與elasticsearch做到這一點。有人有另一種解決方案來解決這個問題?無論如何,謝謝瓦爾,祝你有美好的一天:) –

+0

它既不是一個ES問題,也不是一個缺點,它只是JSON規範的要求;) – Val

+0

謝謝瓦爾:) –

相關問題