我正在向elasticsearch发送查询,并且在文档中以未知的字段顺序进行响应。 我如何修复elsasticsearch返回文档内的字段的顺序? 我的意思是,我发送此查询:
{
"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 :(得分: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"
}
}