2017-06-05 59 views
1

我发送一个http获取请求到弹性搜索服务器,我希望响应是以csv格式。在solr中,我们可以指定wt = csv是否有任何方式在弹性搜索中? 我的查询是:弹性搜索中获取请求的CSV响应

enter code here 
http://elasticServer/_search?q=RCE:"some date" OR 
VENDOR_NAME:"Anuj"&from=0&size=5&[email protected] 


    -----After that i want to force the server to return me response in csv format 

回答

0

默认情况下,ES仅支持两种数据格式:JSON和YAML。但是,如果你打开使用Logstash,你可以达到你想要的东西很容易像这样:

input { 
    elasticsearch { 
    hosts => ["localhost:9200"] 
    query => 'RCE:"some date" OR VENDOR_NAME:"Anuj"' 
    size => 5 
    } 
} 
filter {} 
output { 
    csv { 
    fields => ["field1", "field2", "field3"] 
    path => "/path/to/data.csv" 
    } 
} 

由于elasticsearch输入采用滚动,你可以不指定任何排序。所以,如果排序是对你很重要,你可以使用http_poller input代替elasticsearch一个,像这样:

input { 
    http_poller { 
    urls => { 
     es => { 
     method => get 
     url => 'http://elasticServer/_search?q=RCE:"some date" OR VENDOR_NAME:"Anuj"&from=0&size=5&[email protected]' 
     headers => { 
      Accept => "application/json" 
     } 
     } 
    } 
    codec => "json" 
    } 
} 
filter {} 
output { 
    csv { 
    fields => ["field1", "field2", "field3"] 
    path => "/path/to/data.csv" 
    } 
} 
+0

感谢您的回复在java中是否支持Logstash? 我如何使用Logstash查询使用java和UI –

+0

Logstash是一个ETL工具。你配置它就像我上面显示,然后你运行它。你不能通过Java调用它。你可以尝试@volatilevar在他的答案中提出的建议,这可能适用于Java。 – Val

0

有一个ElasticSearch插件在Github上称为Elasticsearch Data Format Plugin应该满足你的要求。

+0

我们可以在java中使用 –

+0

简短答案是肯定的,因为它不依赖于语言。这是ElasticSearch的插件。您只需安装它(如https://github.com/codelibs/elasticsearch-dataformat#for-5x所示),并可使用任何Java HTTP客户端发出HTTP GET请求以获取csv格式数据。 – volatilevar

+0

因为我们没有在本地使用弹性服务器,所以我们已经部署了一些我们需要在那里安装该插件的位置,或者我们需要在系统中进行安装。 正如我在运行一个窗口环境。感谢您的进一步帮助。请回复 –

相关问题