Example usage for org.apache.http.nio.entity NStringEntity NStringEntity

List of usage examples for org.apache.http.nio.entity NStringEntity NStringEntity

Introduction

In this page you can find the example usage for org.apache.http.nio.entity NStringEntity NStringEntity.

Prototype

public NStringEntity(final String s, String charset) throws UnsupportedEncodingException 

Source Link

Usage

From source file:com.yahoo.ycsb.db.elasticsearch5.ElasticsearchRestClient.java

@Override
public Status update(final String table, final String key, final Map<String, ByteIterator> values) {
    try {//from   w ww  .java2 s .c  o  m
        final Response searchResponse = search(table, key);
        final int statusCode = searchResponse.getStatusLine().getStatusCode();
        if (statusCode == 404) {
            return Status.NOT_FOUND;
        } else if (statusCode != HttpStatus.SC_OK) {
            return Status.ERROR;
        }

        final Map<String, Object> map = map(searchResponse);
        @SuppressWarnings("unchecked")
        final Map<String, Object> hits = (Map<String, Object>) map.get("hits");
        final int total = (int) hits.get("total");
        if (total == 0) {
            return Status.NOT_FOUND;
        }
        @SuppressWarnings("unchecked")
        final Map<String, Object> hit = (Map<String, Object>) ((List<Object>) hits.get("hits")).get(0);
        @SuppressWarnings("unchecked")
        final Map<String, Object> source = (Map<String, Object>) hit.get("_source");
        for (final Map.Entry<String, String> entry : StringByteIterator.getStringMap(values).entrySet()) {
            source.put(entry.getKey(), entry.getValue());
        }
        final Map<String, String> params = emptyMap();
        final Response response = restClient.performRequest("PUT",
                "/" + indexKey + "/" + table + "/" + hit.get("_id"), params,
                new NStringEntity(new ObjectMapper().writeValueAsString(source), ContentType.APPLICATION_JSON));
        if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
            return Status.ERROR;
        }

        if (!isRefreshNeeded) {
            synchronized (this) {
                isRefreshNeeded = true;
            }
        }

        return Status.OK;
    } catch (final Exception e) {
        e.printStackTrace();
        return Status.ERROR;
    }
}

From source file:org.apache.beam.sdk.io.elasticsearch.ElasticsearchIOTestCommon.java

/** Test that the default predicate correctly parses chosen error code. */
public void testDefaultRetryPredicate(RestClient restClient) throws IOException {

    HttpEntity entity1 = new NStringEntity(BAD_REQUEST, ContentType.APPLICATION_JSON);
    Response response1 = restClient.performRequest("POST", "/_bulk", Collections.emptyMap(), entity1);
    assertTrue(CUSTOM_RETRY_PREDICATE.test(response1));

    HttpEntity entity2 = new NStringEntity(OK_REQUEST, ContentType.APPLICATION_JSON);
    Response response2 = restClient.performRequest("POST", "/_bulk", Collections.emptyMap(), entity2);
    assertFalse(DEFAULT_RETRY_PREDICATE.test(response2));
}

From source file:org.elasticsearch.client.SearchIT.java

public void testSearchWithWeirdScriptFields() throws Exception {
    HttpEntity entity = new NStringEntity("{ \"field\":\"value\"}", ContentType.APPLICATION_JSON);
    client().performRequest("PUT", "test/type/1", Collections.emptyMap(), entity);
    client().performRequest("POST", "/test/_refresh");

    {//w w  w. j  ava  2 s.  c o  m
        SearchRequest searchRequest = new SearchRequest("test")
                .source(SearchSourceBuilder.searchSource().scriptField("result", new Script("null")));
        SearchResponse searchResponse = execute(searchRequest, highLevelClient()::search,
                highLevelClient()::searchAsync);
        SearchHit searchHit = searchResponse.getHits().getAt(0);
        List<Object> values = searchHit.getFields().get("result").getValues();
        assertNotNull(values);
        assertEquals(1, values.size());
        assertNull(values.get(0));
    }
    {
        SearchRequest searchRequest = new SearchRequest("test")
                .source(SearchSourceBuilder.searchSource().scriptField("result", new Script("new HashMap()")));
        SearchResponse searchResponse = execute(searchRequest, highLevelClient()::search,
                highLevelClient()::searchAsync);
        SearchHit searchHit = searchResponse.getHits().getAt(0);
        List<Object> values = searchHit.getFields().get("result").getValues();
        assertNotNull(values);
        assertEquals(1, values.size());
        assertThat(values.get(0), instanceOf(Map.class));
        Map<?, ?> map = (Map<?, ?>) values.get(0);
        assertEquals(0, map.size());
    }
    {
        SearchRequest searchRequest = new SearchRequest("test")
                .source(SearchSourceBuilder.searchSource().scriptField("result", new Script("new String[]{}")));
        SearchResponse searchResponse = execute(searchRequest, highLevelClient()::search,
                highLevelClient()::searchAsync);
        SearchHit searchHit = searchResponse.getHits().getAt(0);
        List<Object> values = searchHit.getFields().get("result").getValues();
        assertNotNull(values);
        assertEquals(1, values.size());
        assertThat(values.get(0), instanceOf(List.class));
        List<?> list = (List<?>) values.get(0);
        assertEquals(0, list.size());
    }
}

From source file:org.elasticsearch.client.SearchIT.java

public void testSearchScroll() throws Exception {

    for (int i = 0; i < 100; i++) {
        XContentBuilder builder = jsonBuilder().startObject().field("field", i).endObject();
        HttpEntity entity = new NStringEntity(Strings.toString(builder), ContentType.APPLICATION_JSON);
        client().performRequest(HttpPut.METHOD_NAME, "test/type1/" + Integer.toString(i),
                Collections.emptyMap(), entity);
    }/*from   www.ja  v  a 2  s . c o m*/
    client().performRequest(HttpPost.METHOD_NAME, "/test/_refresh");

    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().size(35).sort("field", SortOrder.ASC);
    SearchRequest searchRequest = new SearchRequest("test").scroll(TimeValue.timeValueMinutes(2))
            .source(searchSourceBuilder);
    SearchResponse searchResponse = execute(searchRequest, highLevelClient()::search,
            highLevelClient()::searchAsync);

    try {
        long counter = 0;
        assertSearchHeader(searchResponse);
        assertThat(searchResponse.getHits().getTotalHits(), equalTo(100L));
        assertThat(searchResponse.getHits().getHits().length, equalTo(35));
        for (SearchHit hit : searchResponse.getHits()) {
            assertThat(((Number) hit.getSortValues()[0]).longValue(), equalTo(counter++));
        }

        searchResponse = execute(
                new SearchScrollRequest(searchResponse.getScrollId()).scroll(TimeValue.timeValueMinutes(2)),
                highLevelClient()::searchScroll, highLevelClient()::searchScrollAsync);

        assertThat(searchResponse.getHits().getTotalHits(), equalTo(100L));
        assertThat(searchResponse.getHits().getHits().length, equalTo(35));
        for (SearchHit hit : searchResponse.getHits()) {
            assertEquals(counter++, ((Number) hit.getSortValues()[0]).longValue());
        }

        searchResponse = execute(
                new SearchScrollRequest(searchResponse.getScrollId()).scroll(TimeValue.timeValueMinutes(2)),
                highLevelClient()::searchScroll, highLevelClient()::searchScrollAsync);

        assertThat(searchResponse.getHits().getTotalHits(), equalTo(100L));
        assertThat(searchResponse.getHits().getHits().length, equalTo(30));
        for (SearchHit hit : searchResponse.getHits()) {
            assertEquals(counter++, ((Number) hit.getSortValues()[0]).longValue());
        }
    } finally {
        ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
        clearScrollRequest.addScrollId(searchResponse.getScrollId());
        ClearScrollResponse clearScrollResponse = execute(clearScrollRequest,
                // Not using a method reference to work around https://bugs.eclipse.org/bugs/show_bug.cgi?id=517951
                (request, headers) -> highLevelClient().clearScroll(request, headers),
                (request, listener, headers) -> highLevelClient().clearScrollAsync(request, listener, headers));
        assertThat(clearScrollResponse.getNumFreed(), greaterThan(0));
        assertTrue(clearScrollResponse.isSucceeded());

        SearchScrollRequest scrollRequest = new SearchScrollRequest(searchResponse.getScrollId())
                .scroll(TimeValue.timeValueMinutes(2));
        ElasticsearchStatusException exception = expectThrows(ElasticsearchStatusException.class,
                () -> execute(scrollRequest, highLevelClient()::searchScroll,
                        highLevelClient()::searchScrollAsync));
        assertEquals(RestStatus.NOT_FOUND, exception.status());
        assertThat(exception.getRootCause(), instanceOf(ElasticsearchException.class));
        ElasticsearchException rootCause = (ElasticsearchException) exception.getRootCause();
        assertThat(rootCause.getMessage(), containsString("No search context found for"));
    }
}

From source file:org.elasticsearch.client.documentation.CRUDDocumentationIT.java

public void testGet() throws Exception {
    RestHighLevelClient client = highLevelClient();
    {/*from w  w w .jav a 2  s .c  o m*/
        String mappings = "{\n" + "    \"mappings\" : {\n" + "        \"doc\" : {\n"
                + "            \"properties\" : {\n" + "                \"message\" : {\n"
                + "                    \"type\": \"text\",\n" + "                    \"store\": true\n"
                + "                }\n" + "            }\n" + "        }\n" + "    }\n" + "}";

        NStringEntity entity = new NStringEntity(mappings, ContentType.APPLICATION_JSON);
        Response response = client().performRequest("PUT", "/posts", Collections.emptyMap(), entity);
        assertEquals(200, response.getStatusLine().getStatusCode());

        IndexRequest indexRequest = new IndexRequest("posts", "doc", "1").source("user", "kimchy", "postDate",
                new Date(), "message", "trying out Elasticsearch");
        IndexResponse indexResponse = client.index(indexRequest);
        assertEquals(indexResponse.getResult(), DocWriteResponse.Result.CREATED);
    }
    {
        //tag::get-request
        GetRequest getRequest = new GetRequest("posts", // <1>
                "doc", // <2>
                "1"); // <3>
        //end::get-request

        //tag::get-execute
        GetResponse getResponse = client.get(getRequest);
        //end::get-execute
        assertTrue(getResponse.isExists());
        assertEquals(3, getResponse.getSourceAsMap().size());
        //tag::get-response
        String index = getResponse.getIndex();
        String type = getResponse.getType();
        String id = getResponse.getId();
        if (getResponse.isExists()) {
            long version = getResponse.getVersion();
            String sourceAsString = getResponse.getSourceAsString(); // <1>
            Map<String, Object> sourceAsMap = getResponse.getSourceAsMap(); // <2>
            byte[] sourceAsBytes = getResponse.getSourceAsBytes(); // <3>
        } else {
            // <4>
        }
        //end::get-response
    }
    {
        GetRequest request = new GetRequest("posts", "doc", "1");
        //tag::get-request-no-source
        request.fetchSourceContext(FetchSourceContext.DO_NOT_FETCH_SOURCE); // <1>
        //end::get-request-no-source
        GetResponse getResponse = client.get(request);
        assertNull(getResponse.getSourceInternal());
    }
    {
        GetRequest request = new GetRequest("posts", "doc", "1");
        //tag::get-request-source-include
        String[] includes = new String[] { "message", "*Date" };
        String[] excludes = Strings.EMPTY_ARRAY;
        FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes);
        request.fetchSourceContext(fetchSourceContext); // <1>
        //end::get-request-source-include
        GetResponse getResponse = client.get(request);
        Map<String, Object> sourceAsMap = getResponse.getSourceAsMap();
        assertEquals(2, sourceAsMap.size());
        assertEquals("trying out Elasticsearch", sourceAsMap.get("message"));
        assertTrue(sourceAsMap.containsKey("postDate"));
    }
    {
        GetRequest request = new GetRequest("posts", "doc", "1");
        //tag::get-request-source-exclude
        String[] includes = Strings.EMPTY_ARRAY;
        String[] excludes = new String[] { "message" };
        FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes);
        request.fetchSourceContext(fetchSourceContext); // <1>
        //end::get-request-source-exclude
        GetResponse getResponse = client.get(request);
        Map<String, Object> sourceAsMap = getResponse.getSourceAsMap();
        assertEquals(2, sourceAsMap.size());
        assertEquals("kimchy", sourceAsMap.get("user"));
        assertTrue(sourceAsMap.containsKey("postDate"));
    }
    {
        GetRequest request = new GetRequest("posts", "doc", "1");
        //tag::get-request-stored
        request.storedFields("message"); // <1>
        GetResponse getResponse = client.get(request);
        String message = getResponse.getField("message").getValue(); // <2>
        //end::get-request-stored
        assertEquals("trying out Elasticsearch", message);
        assertEquals(1, getResponse.getFields().size());
        assertNull(getResponse.getSourceInternal());
    }
    {
        GetRequest request = new GetRequest("posts", "doc", "1");
        //tag::get-request-routing
        request.routing("routing"); // <1>
        //end::get-request-routing
        //tag::get-request-preference
        request.preference("preference"); // <1>
        //end::get-request-preference
        //tag::get-request-realtime
        request.realtime(false); // <1>
        //end::get-request-realtime
        //tag::get-request-refresh
        request.refresh(true); // <1>
        //end::get-request-refresh
        //tag::get-request-version
        request.version(2); // <1>
        //end::get-request-version
        //tag::get-request-version-type
        request.versionType(VersionType.EXTERNAL); // <1>
        //end::get-request-version-type
    }
    {
        GetRequest request = new GetRequest("posts", "doc", "1");

        // tag::get-execute-listener
        ActionListener<GetResponse> listener = new ActionListener<GetResponse>() {
            @Override
            public void onResponse(GetResponse getResponse) {
                // <1>
            }

            @Override
            public void onFailure(Exception e) {
                // <2>
            }
        };
        // end::get-execute-listener

        // Replace the empty listener by a blocking listener in test
        final CountDownLatch latch = new CountDownLatch(1);
        listener = new LatchedActionListener<>(listener, latch);

        //tag::get-execute-async
        client.getAsync(request, listener); // <1>
        //end::get-execute-async

        assertTrue(latch.await(30L, TimeUnit.SECONDS));
    }
    {
        //tag::get-indexnotfound
        GetRequest request = new GetRequest("does_not_exist", "doc", "1");
        try {
            GetResponse getResponse = client.get(request);
        } catch (ElasticsearchException e) {
            if (e.status() == RestStatus.NOT_FOUND) {
                // <1>
            }
        }
        //end::get-indexnotfound
    }
    {
        // tag::get-conflict
        try {
            GetRequest request = new GetRequest("posts", "doc", "1").version(2);
            GetResponse getResponse = client.get(request);
        } catch (ElasticsearchException exception) {
            if (exception.status() == RestStatus.CONFLICT) {
                // <1>
            }
        }
        // end::get-conflict
    }
}

From source file:org.elasticsearch.client.documentation.CRUDDocumentationIT.java

public void testMultiGet() throws Exception {
    RestHighLevelClient client = highLevelClient();

    {//  w ww. j  ava2s  .  c o m
        String mappings = "{\n" + "    \"mappings\" : {\n" + "        \"type\" : {\n"
                + "            \"properties\" : {\n" + "                \"foo\" : {\n"
                + "                    \"type\": \"text\",\n" + "                    \"store\": true\n"
                + "                }\n" + "            }\n" + "        }\n" + "    }\n" + "}";

        NStringEntity entity = new NStringEntity(mappings, ContentType.APPLICATION_JSON);
        Response response = client().performRequest("PUT", "/index", Collections.emptyMap(), entity);
        assertEquals(200, response.getStatusLine().getStatusCode());
    }

    Map<String, Object> source = new HashMap<>();
    source.put("foo", "val1");
    source.put("bar", "val2");
    source.put("baz", "val3");
    client.index(new IndexRequest("index", "type", "example_id").source(source)
            .setRefreshPolicy(RefreshPolicy.IMMEDIATE));

    {
        // tag::multi-get-request
        MultiGetRequest request = new MultiGetRequest();
        request.add(new MultiGetRequest.Item("index", // <1>
                "type", // <2>
                "example_id")); // <3>
        request.add(new MultiGetRequest.Item("index", "type", "another_id")); // <4>
        // end::multi-get-request

        // Add a missing index so we can test it.
        request.add(new MultiGetRequest.Item("missing_index", "type", "id"));

        // tag::multi-get-request-item-extras
        request.add(new MultiGetRequest.Item("index", "type", "with_routing").routing("some_routing")); // <1>
        request.add(new MultiGetRequest.Item("index", "type", "with_version").versionType(VersionType.EXTERNAL) // <2>
                .version(10123L)); // <3>
        // end::multi-get-request-item-extras
        // tag::multi-get-request-top-level-extras
        request.preference("some_preference"); // <1>
        request.realtime(false); // <2>
        request.refresh(true); // <3>
        // end::multi-get-request-top-level-extras

        // tag::multi-get-execute
        MultiGetResponse response = client.multiGet(request);
        // end::multi-get-execute

        // tag::multi-get-response
        MultiGetItemResponse firstItem = response.getResponses()[0];
        assertNull(firstItem.getFailure()); // <1>
        GetResponse firstGet = firstItem.getResponse(); // <2>
        String index = firstItem.getIndex();
        String type = firstItem.getType();
        String id = firstItem.getId();
        if (firstGet.isExists()) {
            long version = firstGet.getVersion();
            String sourceAsString = firstGet.getSourceAsString(); // <3>
            Map<String, Object> sourceAsMap = firstGet.getSourceAsMap(); // <4>
            byte[] sourceAsBytes = firstGet.getSourceAsBytes(); // <5>
        } else {
            // <6>
        }
        // end::multi-get-response

        assertTrue(firstGet.isExists());
        assertEquals(source, firstGet.getSource());

        MultiGetItemResponse missingIndexItem = response.getResponses()[2];
        // tag::multi-get-indexnotfound
        assertNull(missingIndexItem.getResponse()); // <1>
        Exception e = missingIndexItem.getFailure().getFailure(); // <2>
        ElasticsearchException ee = (ElasticsearchException) e; // <3>
        // TODO status is broken! fix in a followup
        // assertEquals(RestStatus.NOT_FOUND, ee.status());        // <4>
        assertThat(e.getMessage(), containsString("reason=no such index")); // <5>
        // end::multi-get-indexnotfound

        // tag::multi-get-execute-listener
        ActionListener<MultiGetResponse> listener = new ActionListener<MultiGetResponse>() {
            @Override
            public void onResponse(MultiGetResponse response) {
                // <1>
            }

            @Override
            public void onFailure(Exception e) {
                // <2>
            }
        };
        // end::multi-get-execute-listener

        // Replace the empty listener by a blocking listener in test
        final CountDownLatch latch = new CountDownLatch(1);
        listener = new LatchedActionListener<>(listener, latch);

        // tag::multi-get-execute-async
        client.multiGetAsync(request, listener); // <1>
        // end::multi-get-execute-async

        assertTrue(latch.await(30L, TimeUnit.SECONDS));
    }
    {
        MultiGetRequest request = new MultiGetRequest();
        // tag::multi-get-request-no-source
        request.add(new MultiGetRequest.Item("index", "type", "example_id")
                .fetchSourceContext(FetchSourceContext.DO_NOT_FETCH_SOURCE)); // <1>
        // end::multi-get-request-no-source
        MultiGetItemResponse item = unwrapAndAssertExample(client.multiGet(request));
        assertNull(item.getResponse().getSource());
    }
    {
        MultiGetRequest request = new MultiGetRequest();
        // tag::multi-get-request-source-include
        String[] includes = new String[] { "foo", "*r" };
        String[] excludes = Strings.EMPTY_ARRAY;
        FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes);
        request.add(
                new MultiGetRequest.Item("index", "type", "example_id").fetchSourceContext(fetchSourceContext)); // <1>
        // end::multi-get-request-source-include
        MultiGetItemResponse item = unwrapAndAssertExample(client.multiGet(request));
        assertThat(item.getResponse().getSource(), hasEntry("foo", "val1"));
        assertThat(item.getResponse().getSource(), hasEntry("bar", "val2"));
        assertThat(item.getResponse().getSource(), not(hasKey("baz")));
    }
    {
        MultiGetRequest request = new MultiGetRequest();
        // tag::multi-get-request-source-exclude
        String[] includes = Strings.EMPTY_ARRAY;
        String[] excludes = new String[] { "foo", "*r" };
        FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes);
        request.add(
                new MultiGetRequest.Item("index", "type", "example_id").fetchSourceContext(fetchSourceContext)); // <1>
        // end::multi-get-request-source-exclude
        MultiGetItemResponse item = unwrapAndAssertExample(client.multiGet(request));
        assertThat(item.getResponse().getSource(), not(hasKey("foo")));
        assertThat(item.getResponse().getSource(), not(hasKey("bar")));
        assertThat(item.getResponse().getSource(), hasEntry("baz", "val3"));
    }
    {
        MultiGetRequest request = new MultiGetRequest();
        // tag::multi-get-request-stored
        request.add(new MultiGetRequest.Item("index", "type", "example_id").storedFields("foo")); // <1>
        MultiGetResponse response = client.multiGet(request);
        MultiGetItemResponse item = response.getResponses()[0];
        String value = item.getResponse().getField("foo").getValue(); // <2>
        // end::multi-get-request-stored
        assertNull(item.getResponse().getSource());
        assertEquals("val1", value);
    }
    {
        // tag::multi-get-conflict
        MultiGetRequest request = new MultiGetRequest();
        request.add(new MultiGetRequest.Item("index", "type", "example_id").version(1000L));
        MultiGetResponse response = client.multiGet(request);
        MultiGetItemResponse item = response.getResponses()[0];
        assertNull(item.getResponse()); // <1>
        Exception e = item.getFailure().getFailure(); // <2>
        ElasticsearchException ee = (ElasticsearchException) e; // <3>
        // TODO status is broken! fix in a followup
        // assertEquals(RestStatus.CONFLICT, ee.status());          // <4>
        assertThat(e.getMessage(), containsString(
                "version conflict, current version [1] is " + "different than the one provided [1000]")); // <5>
        // end::multi-get-conflict
    }

}