2016-04-21 38 views
1

我有一个在elasticsearch中索引的数据集。 (索引名称:demoindex1,类型名称:SearchTech)。我想使用Java将所有结果以JSON格式返回。我的Java代码如下:如何使用Java返回Elasticsearch中的所有结果?

import java.net.InetAddress; 
import org.elasticsearch.action.search.SearchResponse; 
import org.elasticsearch.client.Client; 
import org.elasticsearch.client.transport.TransportClient; 
import org.elasticsearch.common.transport.InetSocketTransportAddress; 
import org.elasticsearch.common.unit.TimeValue; 
import org.elasticsearch.search.SearchHit; 

public class App { 

    public static void main(String[] args) throws Exception { 
    Client client = TransportClient.builder().build().addTransportAddress(
     new InetSocketTransportAddress(InetAddress.getByName("localhost"), 
      9300)); 

    SearchResponse scrollResp = client.prepareSearch("demoindex1") 
     .setScroll(new TimeValue(60000)).setTypes("SearchTech").setSize(1000) 
     .execute().actionGet(); 
    // Scroll until no hits are returned 
    while (true) { 

     for (SearchHit hit : scrollResp.getHits()) { 
     System.out.println(hit.getSourceAsString()); //hit.get 
     } 
     scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()) 
      .setScroll(new TimeValue(60000)).execute().actionGet(); 
     // Break condition: No hits are returned 
     if (scrollResp.getHits().getHits().length == 0) { 
     break; 
     } 
    } 
    } 
} 

我的java程序返回每个命中的源代码部分。但是我想要使用查询GET index/type/_search获取所有结果,因为我们使用查询GET index/type/_search获取Elasticsearch。 我需要返回JSON格式的结果数据集。我在这里做错了什么?

- 我已阅读elasticsearch的JAVA文档,但找不到任何有关获取所有结果数据集的内容。

谢谢。

回答

1

我不能评论,所以我只能在这里写下我的评论:我可能理解你的问题,但如果我错了,请纠正我。

为什么不尝试scrollResp.toString()如果你想获得整个JSON的GET索引/类型/ _search?然后,您可以使用其中一个丰富的库(例如com.fasterxml.jackson)从字符串中读取JSON树。

或者,如果您正在寻找某个_source的JSON,可以使用这些库将hit.getSourceAsString()的结果转换为JSON。

+0

感谢您的回复。是的,我需要输出中的整个Json树。我会尝试你所说的。谢谢你的回答。 –

+0

欢迎您! – Arad

相关问题