根据id 进行简单的 增删改查

1.添加依赖

// 下面的依赖是错误的写法  当你调用异步查询的时候会报错  ,所以你应该使用第二种方法
//   java.lang.NoSuchMethodError: org.elasticsearch.client.Request.addParameters(Ljava/util/Map;)V...<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.4.2</version><exclusions><exclusion><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId></exclusion></exclusions></dependency>
    <properties><elasticsearch.version>7.4.2</elasticsearch.version></properties><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>${elasticsearch.version}</version><exclusions><exclusion><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>${elasticsearch.version}</version></dependency>
# 外国网址查看需要vpn
https://discuss.elastic.co/t/issue-with-high-level-rest-client-api/195853/3

2.编写yml

spring:elasticsearch:uris: http://********:9200

简单查询

索引+id + 需要查询的字段+不需要查询的字段+

   // 查询索引@Testvoid addTest() throws IOException {//构建索引  index + idGetRequest getRequest = new GetRequest("book","1");//设置索引参数 指定自己想要的参数String[] includes = {"name", "price"};String[] exclude = {};FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, exclude);// 获取结果getRequest.fetchSourceContext(fetchSourceContext);GetResponse getResponse = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);System.out.println(getResponse.getId());System.out.println(getResponse.getIndex());System.out.println(getResponse.getSourceAsString());}

异步查询

    @Testvoid checkTest() throws IOException, InterruptedException {//构建索引  index + idGetRequest getRequest = new GetRequest("book","1");//设置索引参数 指定自己想要的参数String[] includes = {"name", "price"};String[] exclude = {};FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, exclude);// 获取结果getRequest.fetchSourceContext(fetchSourceContext);// 同步查询  GetResponse getResponse = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);new ActionListener<GetResponse>() {//执行成功的方法@Overridepublic void onResponse(GetResponse getResponse) {System.out.println(getResponse.getId());System.out.println(getResponse.getIndex());System.out.println(getResponse.getSourceAsString());}// 执行失败的方法@Overridepublic void onFailure(Exception e) {e.printStackTrace();}} ;Thread.sleep(3000);}

获取结果

新增一条数据

新增的四种方法

@Testpublic void testAdd() throws IOException {//        1构建请求IndexRequest request=new IndexRequest("test_posts");request.id("3");
//        =======================构建文档============================
//        构建方法1String jsonString="{\n" +"  \"user\":\"tomas J\",\n" +"  \"postDate\":\"2019-07-18\",\n" +"  \"message\":\"trying out es3\"\n" +"}";request.source(jsonString, XContentType.JSON);//        构建方法2
//        Map<String,Object> jsonMap=new HashMap<>();
//        jsonMap.put("user", "tomas");
//        jsonMap.put("postDate", "2019-07-18");
//        jsonMap.put("message", "trying out es2");
//        request.source(jsonMap);//        构建方法3
//        XContentBuilder builder= XContentFactory.jsonBuilder();
//        builder.startObject();
//        {//            builder.field("user", "tomas");
//            builder.timeField("postDate", new Date());
//            builder.field("message", "trying out es2");
//        }
//        builder.endObject();
//        request.source(builder);
//        构建方法4
//        request.source("user","tomas",
//                    "postDate",new Date(),
//                "message","trying out es2");
//
//        ========================可选参数===================================//设置超时时间request.timeout(TimeValue.timeValueSeconds(1));request.timeout("1s");//自己维护版本号
//        request.version(2);
//        request.versionType(VersionType.EXTERNAL);//        2执行//同步IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);//异步
//        ActionListener<IndexResponse> listener=new ActionListener<IndexResponse>() {//            @Override
//            public void onResponse(IndexResponse indexResponse) {//
//            }
//
//            @Override
//            public void onFailure(Exception e) {//
//            }
//        };
//        client.indexAsync(request,RequestOptions.DEFAULT, listener );
//        try {//            Thread.sleep(5000);
//        } catch (InterruptedException e) {//            e.printStackTrace();
//        }//        3获取结果String index = indexResponse.getIndex();String id = indexResponse.getId();//获取插入的类型if(indexResponse.getResult()== DocWriteResponse.Result.CREATED){DocWriteResponse.Result result=indexResponse.getResult();System.out.println("CREATED:"+result);}else if(indexResponse.getResult()== DocWriteResponse.Result.UPDATED){DocWriteResponse.Result result=indexResponse.getResult();System.out.println("UPDATED:"+result);}ReplicationResponse.ShardInfo shardInfo = indexResponse.getShardInfo();if(shardInfo.getTotal()!=shardInfo.getSuccessful()){System.out.println("处理成功的分片数少于总分片!");}if(shardInfo.getFailed()>0){for (ReplicationResponse.ShardInfo.Failure failure:shardInfo.getFailures()) {String reason = failure.reason();//处理潜在的失败原因System.out.println(reason);}}}

但是上面的新增方法都不够优雅 ,new 对象新增的才是最优雅的
手动维护版本号 ,版本号 必须必须 高于当前版本号 不然报错!!!!
者相当于是一个 PUT 请求

# 既可以创建对象 ,也可以更新(更新是全量更新)  @Testvoid aaddTest() throws IOException {IndexRequest request = new IndexRequest("test_posts");request.id("2");// 插入的时间格式是 2022-08-17 10:59:43 实际显示的格式是 Aug 17, 2022 @ 10:58:59.038Person person = new Person("cunk001", DateUtil.date() , "只是一条用户信息");String perString = JSON.toJSONString(person);request.source(perString, XContentType.JSON) ;// 设置参数request.timeout(TimeValue.timeValueSeconds(3));IndexResponse indexResponse = restHighLevelClient.index(request, RequestOptions.DEFAULT);//获取插入后的结果log.debug("index:{}",indexResponse.getIndex());log.debug("id:{}",indexResponse.getId());log.debug("res:{}",indexResponse.getResult());}

异步新增

 @Testvoid aaddAsTest() throws IOException {IndexRequest request = new IndexRequest("test_posts");request.id("3");// 插入的时间格式是 2022-08-17 10:59:43 实际显示的格式是 Aug 17, 2022 @ 10:58:59.038Person person = new Person("shuang",DateUtil.date(),"这是爽爽");String perString = JSON.toJSONString(person);request.source(perString, XContentType.JSON) ;// 设置参数request.timeout(TimeValue.timeValueSeconds(3));//创建异步回调方法ActionListener<IndexResponse> listener = new ActionListener<IndexResponse>() {@Overridepublic void onResponse(IndexResponse indexResponse) {log.info("index:{}",indexResponse.getIndex());log.info("id:{}",indexResponse.getId());log.info("res:{}",indexResponse.getResult());}@Overridepublic void onFailure(Exception e) {}};restHighLevelClient.indexAsync(request,RequestOptions.DEFAULT, listener );// 防止主线程先挂掉while (true){}}

删除api

    @Testvoid deleteTest() throws IOException {// 1.创建请求DeleteRequest indexRequest = new DeleteRequest("test_posts", "3");//2.执行DeleteResponse deleteResponse = restHighLevelClient.delete(indexRequest, RequestOptions.DEFAULT);// 3.获取结果log.info(deleteResponse.getId());log.info(":{}",deleteResponse.getResult());}

bulk批量操作

我觉得并不优雅

@Testpublic void testBulk() throws IOException {//        1创建请求BulkRequest request = new BulkRequest();
//        request.add(new IndexRequest("post").id("1").source(XContentType.JSON, "field", "1"));
//        request.add(new IndexRequest("post").id("2").source(XContentType.JSON, "field", "2"));request.add(new UpdateRequest("post","2").doc(XContentType.JSON, "field", "3"));request.add(new DeleteRequest("post").id("1"));//        2执行BulkResponse bulkResponse = client.bulk(request, RequestOptions.DEFAULT);for (BulkItemResponse itemResponse : bulkResponse) {DocWriteResponse itemResponseResponse = itemResponse.getResponse();switch (itemResponse.getOpType()) {case INDEX:case CREATE:IndexResponse indexResponse = (IndexResponse) itemResponseResponse;indexResponse.getId();System.out.println(indexResponse.getResult());break;case UPDATE:UpdateResponse updateResponse = (UpdateResponse) itemResponseResponse;updateResponse.getIndex();System.out.println(updateResponse.getResult());break;case DELETE:DeleteResponse deleteResponse = (DeleteResponse) itemResponseResponse;System.out.println(deleteResponse.getResult());break;}}}

elassearch(一)----java api操作elassearch---简单的增删改查相关推荐

  1. PHP操作Mysql简单的增删改查

    PHP操作Mysql简单的增删改查 今天晚上回想了一下php怎么操作mysql,突然发现都忘了,然后通过回忆,搜寻资料总结了以下几点,一是提醒自己不要忘了,再就是希望能帮助一些有帮助的朋友.大佬请路过 ...

  2. html单页面js完成表数据库自动生成带注释的java实体类和简单的增删改查sql

    支持Mysql和Oracle,mybatis和ibatis可选.功能主要还是字符串的拼凑完成的,把用把表信息复制过来或者增加后台,就可以生成简单的增删改查了 临时体验点这里 我也不知道地址什么时候失效 ...

  3. salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)...

    此篇请参看:https://resources.docs.salesforce.com/202/latest/en-us/sfdc/pdf/salesforce_developer_environme ...

  4. php xml 增删改查,PHP实现对xml进行简单的增删改查(CRUD)操作示例

    本文实例讲述了PHP实现对xml进行简单的增删改查(CRUD)操作.分享给大家供大家参考,具体如下: 假如有下面xml文件: 55.8 56 40 339 如何使用php对它进行CRUD?其实像这种简 ...

  5. java简单的增删改查项目 ATM机

    java简单的增删改查项目 login: package atm;import java.util.ArrayList; import java.util.List; import java.util ...

  6. java增删改查代码_Java web 简单的增删改查程序(超详细)

    就是简单的对数据进行增删改查.代码如下: 1.bean层:用来封装属性及其get set方法 toString方法,有参构造方法,无参构造方法等. public classBean {private ...

  7. SpringMVC_实现简单的增删改查

    实现简单的增删改查 1:创建User的javabean package com.doaoao.bean; public class User {private String name;private ...

  8. MyBatis学习--简单的增删改查

    jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 1 Public static void main(String[] arg ...

  9. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  10. Springboot整合JDBC和DBUtils,实现简单的增删改查.

    Springboot整合JDBC和DBUtils,实现简单的增删改查. 一.pom.xml文件 <?xml version="1.0" encoding="UTF- ...

最新文章

  1. Activity中KeyEvent的传递
  2. 【正则表达式1】C++11正则表达式
  3. android数据存放map_android - Java后台把数据用json发到手机端,里面是map存放的,必须要说明数据的类型?...
  4. java访问其它服务器,一个Java Web应用程序是否可以在tomcat服务器的同一本地主机中调用另一个Java Web应用程序...
  5. mysql 删除表记录的 存储过程命令_用SQL语句删除一个数据库的所有表和所有存储过程...
  6. python 加锁_Python 共享变量加锁、释放详解
  7. 超好看倒计时特效单页html模板源码下载
  8. 双y轴设置 颜色_项目实战:Qt多段Y轴折线图框架(双Y轴段折线、支持拽拖、浮动游标显示X值各段Y值、实时下位机数据)...
  9. EF直接更新数据(不需查询)
  10. html项目符号正方形,css如何添加列表项目符号
  11. 微信支付SDK使用总结
  12. win10误删的注册表能还原吗_教你手动还原Win10注册表?
  13. ubuntu18.04安装kinect1(xbox360)驱动以及实时运行rtabmap
  14. 计算机无法安装hp网络打印机,无法安装打印机驱动是怎么回事?不能安装惠普打印机驱动的解决方法...
  15. win快捷键_win10系统超实用快捷键,提高你的效率!
  16. 安全协议系列(二)----CCM与CCMP
  17. 你真的了解宏吗:浅谈宏定义(#define语句)
  18. Python机器学习:泰坦尼克号获救预测一
  19. TikTok上的美金,如何提现到PayPal
  20. 我想团:聚划算的反向电子商务实践

热门文章

  1. Mybatis拦截器 拦截所有更新操作
  2. 内核仿阿里巴巴小说网站源码 PC端+WAP端
  3. 程序员大保健指南,给自己的身心偶尔放松的机会
  4. docker-compose 启动顺序的问题depends_on
  5. centos yum源配置
  6. Charles安卓8手机抓包
  7. 信息安全技术—实验三—PGP邮件加密软件的使用
  8. 宝马和戴姆勒冻结自动驾驶合作项目
  9. 宝马屏幕共享android,宝马屏幕共享功能怎么用
  10. 「实验一小时」——大牛直播讲解PHP楼赛题目,就在今晚!