频道栏目
首页 > 资讯 > JAVA > 正文

关于elasticsearchJavaHighLevelREST的封装操作

18-07-27        来源:[db:作者]  
收藏   我要投稿

pox.xml文件添加以下内容

    org.elasticsearch.client
    elasticsearch-rest-high-level-client
    6.3.2

新建ESHighLevelRestUtil.java

package com;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.HttpHost;
import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
import org.elasticsearch.action.admin.indices.get.GetIndexRequest;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.support.replication.ReplicationResponse;
import org.elasticsearch.action.DocWriteResponse;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.rest.RestStatus;
public class ESHighLevelRestUtil {
	static RestHighLevelClient client = new RestHighLevelClient(
			RestClient.builder(new HttpHost("172.19.12.249", 9200, "http")));

	/**
	 * 验证索引是否存在
	 * 
	 * @param index
	 *            索引名称
	 * @return
	 * @throws Exception
	 */
	public boolean indexExists(String index) throws Exception {
		GetIndexRequest request = new GetIndexRequest();
		request.indices(index);
		request.local(false);
		request.humanReadable(true);

		boolean exists = client.indices().exists(request);
		return exists;
	}

	/**
	 * 
	 * @param index
	 * @param indexType
	 * @param properties
	 *            结构: {name:{type:text}} {age:{type:integer}}
	 * @return
	 * @throws Exception
	 */
	public boolean indexCreate(String index, String indexType,
			Map properties) throws Exception {

		if (indexExists(index)) {
			return true;
		}
		CreateIndexRequest request = new CreateIndexRequest(index);
		request.settings(Settings.builder().put("index.number_of_shards", 3)
				.put("index.number_of_replicas", 2));

		Map jsonMap = new HashMap<>();
		Map mapping = new HashMap<>();
		mapping.put("properties", properties);
		jsonMap.put(indexType, mapping);
		request.mapping(indexType, jsonMap);

		CreateIndexResponse createIndexResponse = client.indices().create(
				request);
		boolean acknowledged = createIndexResponse.isAcknowledged();
		return acknowledged;
	}

	/**
	 * 删除索引
	 * 
	 * @param index
	 * @return
	 * @throws Exception
	 */
	public boolean indexDelete(String index) throws Exception {
		try {
			DeleteIndexRequest request = new DeleteIndexRequest(index);
			DeleteIndexResponse deleteIndexResponse = client.indices().delete(
					request);
			return deleteIndexResponse.isAcknowledged();
		} catch (ElasticsearchException exception) {
			if (exception.status() == RestStatus.NOT_FOUND) {
				return true;
			} else {
				return false;
			}
		}
	}

	/**
	 * 创建更新文档
	 * 
	 * @param index
	 * @param indexType
	 * @param documentId
	 * @param josonStr
	 * @return
	 * @throws Exception
	 */
	public boolean documentCreate(String index, String indexType,
			String documentId, String josonStr) throws Exception {
		IndexRequest request = new IndexRequest(index, indexType, documentId);

		request.source(josonStr, XContentType.JSON);
		IndexResponse indexResponse = client.index(request);

		if (indexResponse.getResult() == DocWriteResponse.Result.CREATED
				|| indexResponse.getResult() == DocWriteResponse.Result.UPDATED) {
			return true;
		}
		ReplicationResponse.ShardInfo shardInfo = indexResponse.getShardInfo();
		if (shardInfo.getTotal() != shardInfo.getSuccessful()) {
			return true;
		}
		if (shardInfo.getFailed() > 0) {
			for (ReplicationResponse.ShardInfo.Failure failure : shardInfo
					.getFailures()) {
				throw new Exception(failure.reason());
			}
		}
		return false;
	}

	/**
	 * 创建更新索引
	 * 
	 * @param index
	 * @param indexType
	 * @param documentId
	 * @param map
	 * @return
	 * @throws Exception
	 */
	public boolean documentCreate(String index, String indexType,
			String documentId, Map map) throws Exception {
		IndexRequest request = new IndexRequest(index, indexType, documentId);

		request.source(map);
		IndexResponse indexResponse = client.index(request);

		if (indexResponse.getResult() == DocWriteResponse.Result.CREATED
				|| indexResponse.getResult() == DocWriteResponse.Result.UPDATED) {
			return true;
		}
		ReplicationResponse.ShardInfo shardInfo = indexResponse.getShardInfo();
		if (shardInfo.getTotal() != shardInfo.getSuccessful()) {
			return true;
		}
		if (shardInfo.getFailed() > 0) {
			for (ReplicationResponse.ShardInfo.Failure failure : shardInfo
					.getFailures()) {
				throw new Exception(failure.reason());
			}
		}
		return false;
	}

	/**
	 * 创建索引
	 * 
	 * @param index
	 * @param indexType
	 * @param josonStr
	 * @return
	 * @throws Exception
	 */
	public String documentCreate(String index, String indexType, String josonStr)
			throws Exception {
		IndexRequest request = new IndexRequest(index, indexType);

		request.source(josonStr, XContentType.JSON);
		IndexResponse indexResponse = client.index(request);

		String id = indexResponse.getId();
		if (indexResponse.getResult() == DocWriteResponse.Result.CREATED
				|| indexResponse.getResult() == DocWriteResponse.Result.UPDATED) {
			return id;
		}
		ReplicationResponse.ShardInfo shardInfo = indexResponse.getShardInfo();
		if (shardInfo.getTotal() != shardInfo.getSuccessful()) {
			return id;
		}
		if (shardInfo.getFailed() > 0) {
			for (ReplicationResponse.ShardInfo.Failure failure : shardInfo
					.getFailures()) {
				throw new Exception(failure.reason());
			}
		}
		return null;
	}

	/**
	 * 创建索引
	 * 
	 * @param index
	 * @param indexType
	 * @param map
	 * @return
	 * @throws Exception
	 */
	public String documentCreate(String index, String indexType,
			Map map) throws Exception {
		IndexRequest request = new IndexRequest(index, indexType);

		request.source(map);
		IndexResponse indexResponse = client.index(request);

		String id = indexResponse.getId();
		if (indexResponse.getResult() == DocWriteResponse.Result.CREATED
				|| indexResponse.getResult() == DocWriteResponse.Result.UPDATED) {
			return id;
		}
		ReplicationResponse.ShardInfo shardInfo = indexResponse.getShardInfo();
		if (shardInfo.getTotal() != shardInfo.getSuccessful()) {
			return id;
		}
		if (shardInfo.getFailed() > 0) {
			for (ReplicationResponse.ShardInfo.Failure failure : shardInfo
					.getFailures()) {
				throw new Exception(failure.reason());
			}
		}
		return null;
	}

	public boolean documentDelete(String index, String indexType,
			String documentId) throws Exception {
		DeleteRequest request = new DeleteRequest(index, indexType, documentId);
		DeleteResponse deleteResponse = client.delete(request);
		if (deleteResponse.getResult() == DocWriteResponse.Result.NOT_FOUND) {
			return true;
		}
		ReplicationResponse.ShardInfo shardInfo = deleteResponse.getShardInfo();
		if (shardInfo.getTotal() != shardInfo.getSuccessful()) {
			return true;
		}
		if (shardInfo.getFailed() > 0) {
			for (ReplicationResponse.ShardInfo.Failure failure : shardInfo
					.getFailures()) {
				throw new Exception(failure.reason());
			}
		}
		return false;
	}

}

新建ESHighLevelRestTest.java

package com;

import java.util.HashMap;
import java.util.Map;

import org.apache.http.HttpHost;
import org.elasticsearch.action.admin.indices.get.GetIndexRequest;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;

public class ESHighLevelRestTest {
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		ESHighLevelRestUtil util = new ESHighLevelRestUtil();

		System.out.println(util.indexExists("indextest001"));

		Map map = new HashMap();
		map.put("name", new HashMap() {
			{
				put("type", "text");
			}
		});
		map.put("age", new HashMap() {
			{
				put("type", "double");
			}
		});
		map.put("sex", new HashMap() {
			{
				put("type", "double");
			}
		});
		map.put("address", new HashMap() {
			{
				put("type", "text");
			}
		});

		// 创建主题
		util.indexCreate("indextest005", "sx", map);

		//创建文档1
		System.out.println(util.documentCreate("indextest005", "sx",
				new HashMap() {
					{
						put("name", "名称1");
						put("age", 18);
						put("sex", 10);
						put("address", "地址1");
					}
				}));

		//创建更新文档2
		System.out.println(util.documentCreate("indextest005", "sx", "1",
				new HashMap() {
					{
						put("name", "名称2");
						put("age", 18);
						put("sex", 10);
						put("address", "地址2");
					}
				}));
		
		//删除文档
		System.out.println(util.documentDelete("indextest005", "sx", "1"));
	}
}

相关TAG标签
上一篇:JAVA纯代码关于用户创建自定义函数
下一篇:说一说关于Pythonrequests
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站