TestESClient.java 8.34 KB
package com.zhaoonline.common.es;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.junit.Assert;
import org.junit.Test;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.zhaoonline.common.es.bean.DeleteResponse;
import com.zhaoonline.common.es.bean.QueryResponse;
import com.zhaoonline.common.es.bean.TermQuery;
import com.zhaoonline.common.es.bean.TermsQuery;
import com.zhaoonline.common.json.JsonUtils;
import com.zhaoonline.common.json.TestDateObject;

public class TestESClient {
	
	@Test
	public void testAddDoc() throws UnsupportedOperationException, IOException{
		String index="zhaoon1";
		String type="test1";
		ESClientConfiguration config=new ESClientConfiguration();
		config.addHostPorts("192.168.0.162:9200");
		
		ESHttpClient client= new ESHttpClient(index,type,config);
		client.init();
		boolean result=false;
		for(int i=0;i<100;i++){
			Map object=new HashMap<>();
			object.put("testKey"+i, "testValue");
			String docString=JsonUtils.toJson(object);
			result=client.addDoc(""+i,docString);
		}
		Assert.assertTrue(result);
	}
	
	
	@Test
	public void testAddDocAutoId() throws UnsupportedOperationException, IOException{
		String index="zhaoon1";
		String type="test1";
		ESClientConfiguration config=new ESClientConfiguration();
		config.addHostPorts("192.168.0.162:9200");
		ESHttpClient client= new ESHttpClient(index,type,config);
		client.init();
		Map object=new HashMap<>();
		object.put("testKey", "testValue");
		String docString=JsonUtils.toJson(object);
		
		boolean result=client.addDoc(docString);
		Assert.assertTrue(result);
	}
	
	
	@Test
	public void testDeleteDocById() throws JsonParseException, JsonMappingException, UnsupportedOperationException, IOException{
		//make sure the doc insert 
		testAddDoc();
		
		String index="zhaoon1";
		String type="test1";
		ESClientConfiguration config=new ESClientConfiguration();
		config.addHostPorts("192.168.0.162:9200");
		ESHttpClient client= new ESHttpClient(index,type,config);
		client.init();
		String id="1";
		boolean response=client.deleteDoc(id);
		Assert.assertTrue(response);
		
	}
	
	
	@Test
	public void testGetDocById() throws UnsupportedOperationException, IOException{
		testAddDoc();
		String index="zhaoon1";
		String type="test1";
		ESClientConfiguration config=new ESClientConfiguration();
		config.addHostPorts("127.0.0.1:9200");
		ESHttpClient client= new ESHttpClient(index,type,config);
		client.init();
		Map source= client.searchById("1");
		Assert.assertNotNull(source);
	}
	
	
	@Test
	public void testQuery() throws JsonParseException, JsonMappingException, UnsupportedOperationException, IOException{
		String index="zhaoonline";
		String type="service";
		ESClientConfiguration config=new ESClientConfiguration();
		config.addHostPorts("192.168.0.162:9200");
		ESHttpClient client= new ESHttpClient(index,type,config);
		client.init();
		
		ZhaoQueryBuilder buidler=new ZhaoQueryBuilder();
		
		buidler.setPage(0,100);
		
		TermsQuery termsQuery=new TermsQuery("serviceName");
		termsQuery.addValue("wx").addValue("wxtest");
		buidler.and(termsQuery);
		TermQuery termQuery=new TermQuery("serviceName", "wxtest");
		buidler.not(termQuery);
		
		
		QueryResponse reponse=client.query(buidler);
		
		Assert.assertNotNull(reponse);
		System.out.println( reponse.getDataList().size());
		Assert.assertEquals(new Long(1), reponse.getTotal());
		client.close();
	}
	
	
	@Test
	public void testQueryWithPageInfo() throws JsonParseException, JsonMappingException, UnsupportedOperationException, IOException{
		String index="zhaoonline";
		String type="service";
		ESClientConfiguration config=new ESClientConfiguration();
		config.addHostPorts("127.0.0.1:9200");
		ESHttpClient client= new ESHttpClient(index,type,config);
		client.init();
		
		ZhaoQueryBuilder buidler=new ZhaoQueryBuilder();
		
		buidler.setPage(0,100);
		QueryResponse reponse=client.query(buidler);
		
		Assert.assertNotNull(reponse);
		System.out.println(reponse.getDataList().size());
		
		Assert.assertEquals(reponse.getTotal().intValue(),reponse.getDataList().size());
		client.close();
	}
	
	
	@Test
	public void testQueryAll() throws JsonParseException, JsonMappingException, UnsupportedOperationException, IOException{
		String index="zhaoonline";
		String type="service";
		ESClientConfiguration config=new ESClientConfiguration();
		config.addHostPorts("127.0.0.1:9200");
		ESHttpClient client= new ESHttpClient(index,type,config);
		client.init();
		
		ZhaoQueryBuilder buidler=new ZhaoQueryBuilder();
		QueryResponse reponse=client.queryAll(buidler);
		
		Set<String> idset=new HashSet<>();
		for(Map<String, Object> map:reponse.getDataList()){
			idset.add((String) map.get("_id"));
		}
		
		Assert.assertNotNull(reponse);
		Assert.assertEquals(reponse.getTotal().intValue(), idset.size());
		client.close();
	}
	
	@Test
	public void testBuilderBulkScript() throws JsonProcessingException{
		String index="zhaoon1";
		String type="test1";
		ESClientConfiguration config=new ESClientConfiguration();
		config.addHostPorts("127.0.0.1:9200");
		ESHttpClient client= new ESHttpClient(index,type,config);
		
		List dataList=new ArrayList<>();
		for(int i=0;i<1;i++){
			Map object=new HashMap<>();
			object.put("testKey"+i, "testValue");
			dataList.add(object);
		}
		StringBuilder string=client.buildBulkIndexScript(null,dataList);
		
		//
		StringBuilder expectBuilder=new StringBuilder();
		expectBuilder.append("{ \"create\" :").append("{ \"_index\" : \"").
		append("zhaoon1").append("\"").append(",\"_type\" :\"").append("test1").append("\"").append("} }").append("\n");
		Map object=new HashMap<>();
		object.put("testKey0", "testValue");
		String objectjson=JsonUtils.toJson(object);
		expectBuilder.append(objectjson).append("\n");
		
		Assert.assertEquals(expectBuilder.toString(), string.toString());
	}
	
	@Test
	public void testBulkAddAutoId() throws UnsupportedOperationException, IOException{
		
		String index="zhaoon1";
		String type="test1";
		ESClientConfiguration config=new ESClientConfiguration();
		config.addHostPorts("127.0.0.1:9200");
		ESHttpClient client= new ESHttpClient(index,type,config);
		client.init();
		
		List dataList=new ArrayList<>();
		for(int i=0;i<100;i++){
			Map object=new HashMap<>();
			object.put("testKey"+i, "testValue");
			dataList.add(object);
		}
		boolean result=client.bulkAddDoc(dataList);
		Assert.assertTrue(result);
	}
	
	@Test(expected=IllegalArgumentException.class)
	public void testBulkAddIdsNotMatchDataList() throws UnsupportedOperationException, IOException{
		
		String index="zhaoon1";
		String type="test1";
		ESClientConfiguration config=new ESClientConfiguration();
		config.addHostPorts("127.0.0.1:9200");
		ESHttpClient client= new ESHttpClient(index,type,config);
		client.init();
		List ids=new ArrayList<>();
		List dataList=new ArrayList<>();
		for(int i=0;i<100;i++){
			Map object=new HashMap<>();
			object.put("testKey"+i, "testValue");
			dataList.add(object);
		}
		boolean result=client.bulkAddDoc(ids,dataList);
	}
	
	
	@Test
	public void testBulkAdd() throws UnsupportedOperationException, IOException{
		
		String index="zhaoon1";
		String type="test1";
		ESClientConfiguration config=new ESClientConfiguration();
		config.addHostPorts("127.0.0.1:9200");
		ESHttpClient client= new ESHttpClient(index,type,config);
		client.init();
		List ids=new ArrayList<>();
		List dataList=new ArrayList<>();
		for(int i=0;i<100;i++){
			Map object=new HashMap<>();
			object.put("testKey"+i, "testValue");
			dataList.add(object);
			ids.add(i);
		}
		boolean result=client.bulkAddDoc(ids,dataList);
		Assert.assertTrue(result);
	}
	
	@Test
	public void testBulkAddDate() throws UnsupportedOperationException, IOException{
		String index="zhaoon2";
		String type="test1";
		ESClientConfiguration config=new ESClientConfiguration();
		config.addHostPorts("192.168.0.162:9200");
		ESHttpClient client= new ESHttpClient(index,type,config);
		client.init();
		List ids=new ArrayList<>();
		List dataList=new ArrayList<>();
		for(int i=0;i<100;i++){
			TestDateObject o=new TestDateObject();
			o.setId(i);
			o.setDate(new Date(System.currentTimeMillis()));
			dataList.add(o);
			ids.add(i);
		}
		boolean result=client.bulkAddDoc(ids,dataList);
		Assert.assertTrue(result);
	}
	
}