基于TransportClient有关ElasticSearch简单的CRUD(多条件查询,多条件修改)

/**创建Client*/ 
Settings settings=Settings.builder().put("cluster.name","my-application").build();
        TransportClient client=new PreBuiltTransportClient(settings);
        client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
	/**
	 * 新增
	 */
	@Autowired
	private TransportClient client;
	
	@Override
	public boolean saveRecord() throws Exception {
		IndexResponse response = client.prepareIndex("索引", "类型")
				.setSource(JSON.toJSONString("数据"), XContentType.JSON)
				.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE)
				.get();
		if("created".equals(response.getResult().getLowercase())) {
			return true;
		}
		return false;
	}
	/**
	 * 删除根据ID
	 * @return
	 */
	public Result deleteRecordsById() {
		Result result = new Result();
		try {
			client.prepareDelete("索引", "类型", "ID").get();
			result.setRet(ResultStatus.OK);
		} catch (Exception e) {
			result.setRet(ResultStatus.ERROR);
			result.setMsg(e.getMessage());
			e.printStackTrace();
		}
		return result;
	}
/**
	 * 修改根据ID
	 * @param doc
	 * @return
	 */
	@Override
	public Result updateRecordsById() {
		Result result = new Result();
		try {
			client.prepareUpdate("索引", "类型", "ID")
				.setDoc(jsonBuilder()
						.startObject()
						.field("字段", "值")  // .....根据自己需要
						.endObject())
				.get();
			result.setRet(ResultStatus.OK);
		} catch (IOException e) {
			result.setRet(ResultStatus.ERROR);
			result.setMsg(e.getMessage());
			e.printStackTrace();
		}
		return result;
	}
/**
	 * 修改自定义
	 * @return
	 */
	@Override
	public Result updateRecordsByEventNum() {
		Result result = new Result();
		try {
			UpdateByQueryRequestBuilder updateByQuery =         UpdateByQueryAction.INSTANCE.newRequestBuilder(client);
			updateByQuery.source(ESInfo.TIMELINE_INDEX)
					//查询要修改的结果集
					.filter(QueryBuilders.termQuery("字段(条件)","值"))
					//修改操作
					.script(new Script( "ctx._source['字段(修改)']='"+ "值"+"'"));
			//响应结果集
			BulkByScrollResponse response = updateByQuery.get();
			long updated = response.getUpdated();
			result.setRet(ResultStatus.OK);
		} catch (Exception e) {
			result.setRet(ResultStatus.ERROR);
			result.setMsg(e.getMessage());
			e.printStackTrace();
		}
		return result;
	}
	/**
	 * 查询根据ID
	 * @return
	 */
	public Result getData(){
		Result result=new Result();
		try {
			GetResponse response = client.prepareGet("索引", "类型", "ID")
					.setOperationThreaded(false)
					.get();
			result.setRet(ResultStatus.OK);
		} catch (Exception e) {
			result.setRet(ResultStatus.ERROR);
			e.printStackTrace();
		}
		return result;
	}
/**
	 * 多条件查询
	 * @return
	 */
	@Override
	public Result getRecordsIdByLzbh() {
		Result result=new Result();
		try {
			BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
			queryBuilder.must(QueryBuilders.matchQuery("字段", "值"));
			SearchHit[] hits = client.prepareSearch()
					.setQuery(queryBuilder)
					.get().getHits().getHits();
			List<String> list = new ArrayList<>();
			for(SearchHit hit : hits) {
				list.add(hit.getId());
			}
			result.setDataStore(list);
			result.setMsg(ResultStatus.OK);
		} catch (Exception e) {
			result.setMsg(ResultStatus.ERROR);
			e.printStackTrace();
		}
		return result;
	}

猜你喜欢

转载自blog.csdn.net/weixin_39041673/article/details/105994986