ElasticSearch JavaAPI RestClient not giving respon

2019-09-02 09:32发布

Am using RestClient JavaAPI to fetch documents from elastic search. But am not getting response for my request.

Am forming my request using QueryBuilder.

Please find my java code which am using to fetch documents from elastic search

private final static String ATTACHMENT = "document_attachment";
private final static String TYPE = "doc";
static long BUFFER_SIZE = 520 * 1024 * 1024;   //  <---- set buffer to 120MB instead of 100MB

public static void main(String args[])
{
    RestClient restClient = null;
    Response contentSearchResponse=null;
    try {

    restClient = RestClient.builder(
                    new HttpHost("localhost", 9200, "http"),
                    new HttpHost("localhost", 9201, "http")).build();
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

    SearchRequest contentSearchRequest = new SearchRequest(ATTACHMENT); 
    SearchSourceBuilder contentSearchSourceBuilder = new SearchSourceBuilder();
    contentSearchRequest.types(TYPE);
    QueryBuilder attachmentQB = QueryBuilders.matchQuery("attachment.content", "activa");
    contentSearchSourceBuilder.query(attachmentQB);
    contentSearchSourceBuilder.size(50);
    contentSearchRequest.source(contentSearchSourceBuilder);
    System.out.println("Request --->"+contentSearchRequest.toString());

    Map<String, String> params = Collections.emptyMap();
    HttpEntity entity = new NStringEntity(contentSearchSourceBuilder.toString(), ContentType.APPLICATION_JSON);
    HttpAsyncResponseConsumerFactory.HeapBufferedResponseConsumerFactory consumerFactory =
            new HttpAsyncResponseConsumerFactory.HeapBufferedResponseConsumerFactory((int) BUFFER_SIZE);

    System.out.println("Printing Entity---->"+entity.toString());

    try {
        contentSearchResponse = restClient.performRequest("GET", "/document_attachment/doc/_search", params, entity, consumerFactory);
    } catch (IOException e1) {
        e1.printStackTrace();
    } 
    System.out.println("Entity Response --->"+contentSearchResponse.getEntity());
    }

Please find the details about my Reqest, Entity & Response that am printing using Sysout.

Request --->SearchRequest{searchType=QUERY_THEN_FETCH, indices=[document_attachment], indicesOptions=IndicesOptions[id=38, ignore_unavailable=false, allow_no_indices=true, expand_wildcards_open=true, expand_wildcards_closed=false, allow_aliases_to_multiple_indices=true, forbid_closed_indices=true, ignore_aliases=false], types=[doc], routing='null', preference='null', requestCache=null, scroll=null, maxConcurrentShardRequests=0, batchedReduceSize=512, preFilterShardSize=128, source={"size":50,"query":{"match":{"id":{"query":"87740","operator":"OR","prefix_length":0,"max_expansions":50,"fuzzy_transpositions":true,"lenient":false,"zero_terms_query":"NONE","auto_generate_synonyms_phrase_query":true,"boost":1.0}}}}}
Printing Entity---->[Content-Type: application/json; charset=UTF-8,Content-Length: 233,Chunked: false]
Entity Response --->[Content-Length: 929382,Chunked: false]

1条回答
We Are One
2楼-- · 2019-09-02 10:25

You do get a response which is 929382 bytes long. So you simply need to read the data from the response:

String responseBody = EntityUtils.toString(response.getEntity());
查看更多
登录 后发表回答