@Override public void process(OutputStream out) throws IOException { out.write(getResponse.getSourceAsString().getBytes(charset)); } });
@Override public <T> T mapResult(GetResponse response, Class<T> clazz) { T result = mapEntity(response.getSourceAsString(), clazz); if (result != null) { setPersistentEntityId(result, response.getId(), clazz); setPersistentEntityVersion(result, response.getVersion(), clazz); } return result; }
@Override public <T> LinkedList<T> mapResults(MultiGetResponse responses, Class<T> clazz) { LinkedList<T> list = new LinkedList<>(); for (MultiGetItemResponse response : responses.getResponses()) { if (!response.isFailed() && response.getResponse().isExists()) { T result = mapEntity(response.getResponse().getSourceAsString(), clazz); setPersistentEntityId(result, response.getResponse().getId(), clazz); setPersistentEntityVersion(result, response.getResponse().getVersion(), clazz); list.add(result); } } return list; }
@Override public String sourceAsString() { return this.getResponse.getSourceAsString(); }
/** * 获取单个对象(ID) * * @param transportClient * @throws IOException */ private static void query(TransportClient transportClient) throws IOException { GetResponse getResponse = transportClient.prepareGet("product_index", "product", "1").get(); logger.info("--------------------------------:" + getResponse.getSourceAsString()); }
@Override public void onResponse(GetResponse getResponse) { JsonObject source = (getResponse.isExists() ? new JsonObject(getResponse.getSourceAsString()) : null); JsonObject reply = new JsonObject() .put(CONST_INDEX, getResponse.getIndex()) .put(CONST_TYPE, getResponse.getType()) .put(CONST_ID, getResponse.getId()) .put(CONST_VERSION, getResponse.getVersion()) .put(CONST_SOURCE, source); resultHandler.handle(Future.succeededFuture(reply)); }
@Override public <T> T select(String index, String type, String id, Class<T> clazz) throws Exception { GetResponse response = selectIndex(index, type, id); log.debug(response.toString()); if(null != response && response.isExists()){ return JSON.parseObject(response.getSourceAsString(), clazz); } return null; }
@SuppressWarnings("unchecked") @Override public Optional<T> findOne(final String id) { final GetResponse response = client .prepareGet(index, type, id) .setFetchSource(true) .execute() .actionGet(); final String json = response.getSourceAsString(); return ofNullable(json) .map(deserializer) .map(e -> (T) e.withId(id)); }
/** * 获取数据 * ElasticSearch提供了根据索引名称,类别,文档ID来获取数据 */ @Test public void testGet(){ GetResponse getResponse=client.prepareGet("twitter", "tweet", "1").get(); System.out.println(getResponse.getSourceAsString()); }
public static String rawMultipleData(MultiGetResponse response) { StringBuilder sb = new StringBuilder("["); boolean first = true; for (MultiGetItemResponse getItemResponse : response.getResponses()) { if (getItemResponse.getResponse().isExists()) { if (first) { first = false; } else { sb.append(","); } sb.append(getItemResponse.getResponse().getSourceAsString()); } } sb.append("]"); return sb.toString(); } }
@Override public LogEntry getLogEntryByID(long id) { GetResponse ret = esClient.get( new GetRequest(getESIndexName(), ElasticSearchConstants.ENTRY_TYPE, String.valueOf(id))); if (!ret.isExists()) { return null; } try { return new ObjectMapper().readValue(ret.getSourceAsString(), LogEntryImpl.class); } catch (IOException e) { throw new NuxeoException("Unable to read Entry for id " + id, e); } }
@SuppressWarnings("unchecked") public static String getScriptFromResponse(GetResponse responseFields) { Map<String, Object> source = responseFields.getSourceAsMap(); if (source.containsKey("template")) { try { XContentBuilder builder = XContentFactory.contentBuilder(XContentType.JSON); Object template = source.get("template"); if (template instanceof Map ){ builder.map((Map<String, Object>)template); return builder.string(); } else { return template.toString(); } } catch (IOException | ClassCastException e) { throw new IllegalStateException("Unable to parse " + responseFields.getSourceAsString() + " as json", e); } } else if (source.containsKey("script")) { return source.get("script").toString(); } else { try { XContentBuilder builder = XContentFactory.contentBuilder(XContentType.JSON); builder.map(responseFields.getSource()); return builder.string(); } catch (IOException|ClassCastException e) { throw new IllegalStateException("Unable to parse " + responseFields.getSourceAsString() + " as json", e); } } }
@SuppressWarnings("unchecked") @Override @SneakyThrows({ IOException.class }) public <T> T findById(Class<T> clazz, String id) { boolean abstractType = Modifier.isAbstract(clazz.getModifiers()); assertIdNotNullFor(id, "findById"); String indexName = getIndexForType(clazz); String typeName = abstractType ? null : MappingBuilder.indexTypeFromClass(clazz); GetResponse response = getClient().prepareGet(indexName, typeName, id).execute().actionGet(); if (response == null || !response.isExists()) { ESIndexMapper.getLog().debug("Nothing found in index [ {} ], type [ {} ], for Id [ {} ].", indexName, typeName, id); return null; } ESIndexMapper.getLog().debug("Found one in index [ {} ], type [ {} ], for Id [ {} ].", indexName, typeName, id); if (abstractType) { return (T) getJsonMapper().readValue(response.getSourceAsString(), getTypesToClasses().get(response.getType())); } return getJsonMapper().readValue(response.getSourceAsString(), clazz); }
@SuppressWarnings("unchecked") @Override public List<T> findAll(final List<String> ids) { if (ids.isEmpty()) { return ImmutableList.of(); } final Builder<T> builder = ImmutableList.builder(); final MultiGetResponse response = client .prepareMultiGet() .add(index, type, ids) .execute() .actionGet(); for(final MultiGetItemResponse item : response.getResponses()) { final GetResponse get = item.getResponse(); if(get.isSourceEmpty()) { continue; } final String json = get.getSourceAsString(); final T entity = deserializer.apply(json); builder.add((T) entity.withId(get.getId())); } return builder.build(); }
@Override @SneakyThrows({ IOException.class }) public <T> List<T> findByIds(Class<T> clazz, String... ids) { String indexName = getIndexForType(clazz); String typeName = MappingBuilder.indexTypeFromClass(clazz); MultiGetResponse response = getClient().prepareMultiGet().add(indexName, typeName, ids).execute().actionGet(); if (response == null || response.getResponses() == null || response.getResponses().length == 0) { ESIndexMapper.getLog().debug("Nothing found in index [ {} ], type [ {} ], for Ids [ {} ].", indexName, typeName, Arrays.toString(ids)); return null; } List<T> result = new ArrayList<>(); for (MultiGetItemResponse getItemResponse : response.getResponses()) { if (getItemResponse.getResponse().isExists()) { result.add(getJsonMapper().readValue(getItemResponse.getResponse().getSourceAsString(), clazz)); } } return result; }
/** * 根据id查询 * * @param id 主键id * @param index 索引 * @param type 类型 * @return 返回查询得到的 */ public String searchById(String index, String type, String id) { String jsonString = null; try { GetResponse response = client.prepareGet() .setId(id) .setIndex(index) .setType(type) .execute() .actionGet(); jsonString = response.getSourceAsString(); } catch (Exception e) { EsLogUtils.error("{},ES查询报错:索引:{};id:{};{}", type, index, id, e.getMessage()); return jsonString; } return jsonString; }
@Override public <T> T queryForObject(GetQuery query, Class<T> clazz) { ElasticsearchPersistentEntity<T> persistentEntity = getPersistentEntityFor(clazz); GetResponse response = client.prepareGet(persistentEntity.getIndexName(), persistentEntity.getIndexType(), query.getId()) .execute().actionGet(); return mapResult(response.getSourceAsString(), clazz); }
@Override public synchronized State getRiverState(final Folder folder) throws MessagingException { try { waitForCluster(); if (client.admin().indices().prepareExists(index()).execute().actionGet().isExists()) { final GetResponse response = client .prepareGet(index(), RIVERSTATE_TYPE, FOLDERSTATE_ID + "_" + folder.getURLName().toString().hashCode()).execute() .get(); if (!response.isSourceEmpty()) { return mapper.readValue(response.getSourceAsString(), new TypeReference<State>() { }); } } } catch (final Exception ex) { throw new MessagingException("Unable to get river state", ex); } final State rs = new State(); rs.setFolderUrl(folder.getURLName().toString()); // rs.setLastUid(1L); rs.setExists(true); return rs; }
/** * Reconfigure jira river. Must be stopped! */ public synchronized void reconfigure() { if (!closed) throw new IllegalStateException("Jira River must be stopped to reconfigure it!"); logger.info("reconfiguring JIRA River"); String riverIndexName = getRiverIndexName(); refreshSearchIndex(riverIndexName); GetResponse resp = client.prepareGet(riverIndexName, riverName().name(), "_meta").execute().actionGet(); if (resp.isExists()) { if (logger.isDebugEnabled()) { logger.debug("Configuration document: {}", resp.getSourceAsString()); } Map<String, Object> newset = resp.getSource(); configure(newset); } else { throw new IllegalStateException("Configuration document not found to reconfigure jira river " + riverName().name()); } }
/** * 获取多个对象(根据ID) * * @param transportClient * @throws IOException */ private static void queryByMultiGet(TransportClient transportClient) throws IOException { MultiGetResponse multiGetItemResponses = transportClient.prepareMultiGet() .add("product_index", "product", "1") .add("product_index", "product", "2") .add("product_index", "product", "3") .add("product_index", "product", "4") .add("product_index", "product", "5") .get(); String resultJSON = null; for (MultiGetItemResponse multiGetItemResponse : multiGetItemResponses) { GetResponse getResponse = multiGetItemResponse.getResponse(); if (getResponse.isExists()) { resultJSON = getResponse.getSourceAsString(); } } logger.info("--------------------------------:" + resultJSON); }