博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Es学习第十一课,使用java操作elasticsearch
阅读量:6221 次
发布时间:2019-06-21

本文共 5371 字,大约阅读时间需要 17 分钟。

  前面十节课我们已经把ES的基本概念和使用讲的差不多了,现在我们就用基于java来实际开发一个操作ES的小项目,带大家来一起练练手。

1、我们用IDEA创建一个maven项目

项目结构如上图所示,然后我们就引入操作ES需要用到的jar和JUNIT,pom.xml最终配置如下:

4.0.0
com.kakatadage
esdemo
1.0-SNAPSHOT
junit
junit
4.12
test
org.elasticsearch.client
transport
6.5.1
esdemo
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8
utf8

 项目创建完成后,我们就可以针对ES实现数据的增删改查了。

2、实现ES实现查询

 新建一个测试类,如下图:

 

 最后代码如下所示:

package com.kakatadage.esdemo.test;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.client.transport.TransportClient;import org.elasticsearch.common.settings.Settings;import org.elasticsearch.common.transport.TransportAddress;import org.elasticsearch.transport.client.PreBuiltTransportClient;import org.junit.Test;import java.net.InetAddress;import java.net.UnknownHostException;public class EsDemo {    //从ES中查询数据    @Test    public void test1() throws UnknownHostException {        //指定ES集群        Settings setting = Settings.builder().put("cluster.name",                "my-application").build();        //创建访问ES服务器的客户端        TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)                                 .addTransportAddress(                                         new TransportAddress(                                                 InetAddress.getByName("127.0.0.1"),9300));        //get方式数据查询 ,参数为Index,type和id        GetResponse response = client.prepareGet("lib4","items","5").get();        System.out.println(response.getSourceAsString());        client.close();    }}

返回结果就是一个JSON字符串

{ "price" : null, "itemID" : "ID1005" }

 

3、java 插入ES一条数据

//插入数据    @Test    public void test2() throws IOException {        //指定ES集群        Settings setting = Settings.builder().put("cluster.name",                "my-application").build();        //创建访问ES服务器的客户端        TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)                .addTransportAddress(                        new TransportAddress(                                InetAddress.getByName("127.0.0.1"),9300));        XContentBuilder doc = XContentFactory.jsonBuilder()                .startObject()                .field("id","1")                .field("title","我在学习es插入操作")                .field("content","好好学习,天天向上")                .endObject();        //添加一个doc        IndexResponse response = client.prepareIndex("lib5","testadd",null)//id为null,由ES自己生成                .setSource(doc).get();        System.out.println(response.status());//打印添加是否成功        client.close();    }

返回结果:

{  "took": 1,  "timed_out": false,  "_shards": {    "total": 5,    "successful": 5,    "skipped": 0,    "failed": 0  },  "hits": {    "total": 1,    "max_score": 1,    "hits": [      {        "_index": "lib5",        "_type": "testadd",        "_id": "dympT2cBfvwZhJjhaFQ3",        "_score": 1,        "_source": {          "id": "1",          "title": "我在学习es插入操作",          "content": "好好学习,天天向上"        }      }    ]  }}

4、java 删除ES一个文档

//删除文档    @Test    public void test3() throws IOException {        //指定ES集群        Settings setting = Settings.builder().put("cluster.name",                "my-application").build();        //创建访问ES服务器的客户端        TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)                .addTransportAddress(                        new TransportAddress(                                InetAddress.getByName("127.0.0.1"),9300));        DeleteResponse response = client.prepareDelete("lib5","testadd","dympT2cBfvwZhJjhaFQ3")                .get();        System.out.println(response.status());//打印添加是否成功        client.close();    }

5、java 修改ES一个文档

我们先新增一个,然后根据它的ID来更新

//更新文档    @Test    public void test4() throws IOException, ExecutionException, InterruptedException {        //指定ES集群        Settings setting = Settings.builder().put("cluster.name",                "my-application").build();        //创建访问ES服务器的客户端        TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)                .addTransportAddress(                        new TransportAddress(                                InetAddress.getByName("127.0.0.1"),9300));        UpdateRequest request = new UpdateRequest();        request.index("lib5")                .type("testadd")                .id("eCm1T2cBfvwZhJjhF1SM")                .doc(                        XContentFactory.jsonBuilder().startObject()                        .field("title","我在学习ES的修改操作")                                .field("newadd","新增字段")                        .endObject()                );        UpdateResponse response = client.update(request).get();        System.out.println(response.status());//打印是否成功        client.close();    }

 

转载于:https://www.cnblogs.com/kakatadage/p/10021957.html

你可能感兴趣的文章
关于 Windows 7 的 200M 引导卷
查看>>
项目经理之初为项目经理
查看>>
C语言结构指针传递结构内容
查看>>
Python过渡性模块重载(递归重载模块)
查看>>
mysql错误信息的利用
查看>>
MyEclipse启动失败现象以及解决办法
查看>>
Vmware vSphere常见问题汇总(四)
查看>>
反编译Silverlight项目
查看>>
Serving websites from svn checkout considered harmful
查看>>
迁移SVN注意事项及操作方法
查看>>
linux 的GPT分区
查看>>
getRealPath()和getContextPath()的区别
查看>>
浅析:AD组添加成员后为何客户端要注销?
查看>>
System Center Data Protection Manager 2007补助说明
查看>>
Fortune 500市场占有率分析:Compute、CDN、DNS
查看>>
RHCE 学习笔记(33) - Postfix
查看>>
Windows Server群集感知更新(CAU)-上
查看>>
LVM磁盘管理技术案例讲解
查看>>
SCCM 2012系列13 操作系统播发②
查看>>
Memcached 分布式缓存系统部署与调试
查看>>