Java操作Elasticsearch

来源:互联网 发布:外包淘宝客服多少钱 编辑:程序博客网 时间:2024/06/05 02:44

Java操作Elasticsearch


今天呢,发一篇JAVA操作ES搜索引擎的代码吧!


创建工程就不说了

Maven工程:加入Maven依赖!!!

pom.xml

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>1.4.4</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.1.3</version></dependency>

JUnit测试首先连接:

/** * Title: testConnection * Description: 测试连接 */TransportClient client = null;@Beforepublic void connection(){//设置一些属性//Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name","elasticsearch").build();// 获取一个客户端对象client = new TransportClient();//new TransportClient(settings);//指定连接的Es节点Ip和端口 端口默认使用 9300TransportAddress transportAddress = new InetSocketTransportAddress("cloudera",9300);client.addTransportAddress(transportAddress);//获取客户端 连接上的节点信息ImmutableList<DiscoveryNode> nodes = client.connectedNodes();for (DiscoveryNode discoveryNode : nodes) {System.out.println(discoveryNode.getHostAddress()+"\t"+discoveryNode.getHostName());}}
上面用到的核心类:TransportClient


定义两个常量 方便之后的操作:

private final static String INDEX = "test";private final static String TYPE = "emp";

上面是索引库的位置 和 类型

  

创建索引:有4种方法 下面给出代码

/** *  * Title: creatIndex1 * Description:创建索引___JSON */@Testpublic void creatIndex1() {String jsonstr = "{\"name\":\"Baby\",\"address\":\"jx\",\"age\":23}";IndexResponse response = client.prepareIndex(INDEX, TYPE, "3")//.setSource(jsonstr).execute()//.actionGet();System.out.println(response.getId());}/** *  * Title: creatIndex2 * Description:创建索引___Map */@Testpublic void creatIndex2() {Map<String, Object> source = new HashMap<String, Object>();source.put("name", "ww");source.put("age", 20);source.put("address", "SH");IndexResponse response = client.prepareIndex(INDEX, TYPE)//.setSource(source).execute()//.actionGet();System.out.println(response.getId());}/** *  * Title: creatIndex3 * Description:创建索引___Bean-->工具类转JSON * @throws JsonProcessingException  */@Testpublic void creatIndex3() throws Exception {Person person = new Person();person.setName("JSQ");person.setAge(21);person.setAddress("JL");ObjectMapper mapper = new ObjectMapper();IndexResponse response = client.prepareIndex(INDEX, TYPE)//.setSource(mapper.writeValueAsString(person)).execute()//.actionGet();System.out.println(response.getId());}/** *  * Title: creatIndex4  * Description:创建索引___工具类 XContentBuilder * @throws JsonProcessingException  */@Testpublic void creatIndex4() throws Exception {XContentBuilder builder = XContentFactory.jsonBuilder()//.startObject()//  {.field("name", "test")// "name":"test".field("age", 31)//.endObject();//  }IndexResponse response = client.prepareIndex(INDEX, TYPE)//.setSource(builder).execute()//.actionGet();System.out.println(response.getId());}

根据ID读取索引

/** *  * Title: getIndex * Description:查詢 */@Testpublic void getIndexByID(){     GetResponse get = client.prepareGet(INDEX, TYPE, "1").execute().actionGet();          System.out.println(get.getSourceAsString());}


更新操作:

/** *  * Title: getIndex * Description:更新1 * @throws IOException  */@Testpublic void Update() throws Exception {XContentBuilder builder = XContentFactory.jsonBuilder()//.startObject()//  {.field("name", "qwer")// "name":"test".field("age", 16)//.endObject();//  }UpdateResponse response = client.prepareUpdate(INDEX, TYPE, "AVZ_sjFPSKhvuiHi4K8Z").setDoc(builder).execute().actionGet();System.out.println(response.getVersion());}/** *  * Title: getIndex  * Description:更新2 *  * @throws Exception */@Testpublic void Update2() throws Exception {UpdateRequest request = new UpdateRequest(INDEX, TYPE, "AVZ_sjG3SKhvuiHi4K8a");request.doc(XContentFactory.jsonBuilder().startObject().field("age", 18).endObject());UpdateResponse response = client.update(request).get();System.out.println(response.getVersion());}/** *  * Title: UpdateOrCreate * Description: 更新或者插入 * @throws Exception */@Testpublic void UpdateOrCreate() throws Exception {UpdateRequest request = new UpdateRequest(INDEX, TYPE, "4");XContentBuilder builder = XContentFactory.jsonBuilder()//.startObject()//  {.field("name", "adfg")// "name":"test".field("age", 66)//.endObject();//  }request.doc(builder);request.upsert(builder);UpdateResponse response = client.update(request).get();System.out.println(response.getVersion());}


删除操作

/** *  * Title: UpdateOrCreate * Description: 删除1 * @throws Exception */@Testpublic void delete() throws Exception {DeleteRequest request = new DeleteRequest(INDEX, TYPE, "AVZ9SoaeqXbhzyjETmWC");DeleteResponse response = client.delete(request ).get();System.out.println("版本:"+response.getVersion());}/** *  * Title: UpdateOrCreate * Description: 删除2 * @throws Exception */@Testpublic void delete2() throws Exception {DeleteResponse response = client.prepareDelete(INDEX, TYPE, "1").execute().actionGet();System.out.println("版本:"+response.getVersion());}


求索引总数:

/** *  * Title: QueryCount * Description: 求总数 * @throws Exception */@Testpublic void QueryCount() throws Exception {long l = client.prepareCount(INDEX).execute().get().getCount();System.out.println("总数:"+l);}

批量操作:

/** *  * Title: testBulk * Description:批量操作 */@Testpublic void testBulk(){BulkRequestBuilder bulk = client.prepareBulk();//创建索引IndexRequest request1 = new IndexRequest(INDEX, TYPE, "101");request1.source("{\"name\":\"test101\",\"age\":101}");IndexRequest request2 = new IndexRequest(INDEX, TYPE, "102");request2.source("{\"name\":\"test102\",\"age\":102}");//删除索引DeleteRequest request3 = new DeleteRequest(INDEX, TYPE, "2");bulk.add(request1);bulk.add(request2);bulk.add(request3);BulkResponse response = bulk.execute().actionGet();if(response.hasFailures()){System.out.println("发生错误");}else{System.out.println("全部执行成功");}}



代码也比较简单 很好理解!!!


1 0
原创粉丝点击