List of usage examples for org.apache.http.nio.entity NStringEntity NStringEntity
public NStringEntity(final String s, String charset) throws UnsupportedEncodingException
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 } }