原生java api操作ES数据库

摘要:
test是索引库的名称DeleteIndexRequest=newDeleteIndexRequest(“test”);并指定索引库testIndexRequestrequest=newIndexRequest(“test”);request.type(“std”);请求。超时(TimeValue.timeValueSeconds(60))被解决;
原生java api操作ES数据库

该部分也只写了一点点,后面有更简单的做法,就没写完

有需要再继续写吧...........参考一下就好了

@SpringBootTest
class JavaEsApplicationTests {

    @Autowired
    private RestHighLevelClient restHighLevelClient;

    /**
     * ES索引数据库,提供RestAPI
     * POST 创建
     * PUT 修改
     * DELETE 删除
     * GET 查询
     */
    //创建索引库
    @Test
    void creteIndex() throws IOException {
        //先发送一个创建索引库的请求,test是索引库的名字
        CreateIndexRequest request = new CreateIndexRequest("test");
        //通过核心对象创建索引库
        CreateIndexResponse response = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
        //ACK 确认
        System.out.println(response.isAcknowledged());
    }

    //判断索引库是否存在
    @Test
    void isExists() throws IOException {
        GetIndexRequest test = new GetIndexRequest("test");
        boolean exists = restHighLevelClient.indices().exists(test, RequestOptions.DEFAULT);
        System.out.println(exists);
    }

    //删除索引库
    @Test
    void deleteIndex() throws IOException {
        //发送一个删除索引库的请求,test是索引库的名字
        DeleteIndexRequest request = new DeleteIndexRequest("test");
        //通过核心对象删除索引库
        AcknowledgedResponse delete = restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);
        System.out.println(delete.isAcknowledged());
    }

    /**
     * POST /user/stu/1
     * {
     *     "uid":1,
     *     "uname":"张三",
     *     "upwd":"123456"
     * }
     */
    //针对文档做增删查改操作
    //增加数据
    @Test
    void insertData() throws IOException {
        //先创建一个User对象
        User user = new User(3, "王五", "123456");
        //创建IndexRequest请求的对象,并指定索引库test
        IndexRequest request = new IndexRequest("test");
        //设置类型
        //6.8.7版本的ES,如果不指定文档类型,那么汇报错:org.elasticsearch.action.ActionRequestValidationException: Validation Failed: 1: type is missing;
        request.type("std");
        //设置id值,如果不指定,则默认给一个UUID
        request.id("2");
        //设置文档数据源,就是保存的数据,数据格式为JSON
        //需要导入fastjson包
        request.source(JSON.toJSONString(user),XContentType.JSON);
        //如果出现:java.net.SocketTimeoutException: 30,000 milliseconds timeout on connection http-outgoing-0 [ACTIVE]
        //如果还是不行就重启ElasticSearch,就解决了
        request.timeout(TimeValue.timeValueSeconds(60));
        //开始插入数据
        IndexResponse index = restHighLevelClient.index(request, RequestOptions.DEFAULT);
        System.out.println(index.status().getStatus()); //查看状态
        System.out.println(index.status().name()); //CREATE
    }

    //更新数文档数据
    @Test
    void updateData() throws IOException {
        //指定要修改的索引库,类型和id
        UpdateRequest request = new UpdateRequest("test","std","2");
        //设置数据
        /**
         * 我的ES版本的是6.8.7
         * 原始:uid:3,uname:王五,wpwd:123456
         * (1)只设置user.setUname("赵柳"); ==> 结果:uid:0,uname:赵柳,wpwd:123456
         * (2)只设置user.setUname("赵柳");user.setUpwd("79856"); ==> 结果:uid:0,uname:赵柳,wpwd:79856
         * (3)只设置user.setUpwd("111111"); ==> 结果:uid:0,uname:王五,wpwd:111111
         */
        User user = new User();
        user.setUpwd("111111");
        System.out.println(user);
        //转化为JSON格式的数据
        request.doc(JSON.toJSONString(user),XContentType.JSON);
        //更新数据
        restHighLevelClient.update(request,RequestOptions.DEFAULT);
    }

    //删除数据
    @Test
    void deleteData() throws IOException {
        DeleteRequest request = new DeleteRequest("test");
        request.type("std");
        request.id("2");
        DeleteResponse delete = restHighLevelClient.delete(request, RequestOptions.DEFAULT);
        System.out.println(delete.status().name());
    }

    //但条件查询+分页
    @Test
    void search() throws IOException {
        String keywords = "";
        SearchRequest searchRequest = new SearchRequest("test");
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        MatchAllQueryBuilder query = QueryBuilders.matchAllQuery();
        searchSourceBuilder.query(query);
        searchSourceBuilder.from(0).size(2);
        searchRequest.source(searchSourceBuilder);
        SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = search.getHits().getHits();
//        for (SearchHit )
    }

    @Test
    void contextLoads() {
    }

}

免责声明:文章转载自《原生java api操作ES数据库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇安卓手机!用swiper做轮播效果,两张图片之间会有一个像素的空白HTML标签CSS默认值研究下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

scan chain的原理和实现——5.UDTP

UDTP(user defined test point) 指示DFTC在设计中用户指定的位置插入控制点和观察点 1.为什么要使用UDTP? 修复无法控制的clock和/或asynch pins;  增加设计的测试覆盖率;  减少pattern数量 2.UDTP的类型 ①Force force_0、force_1、force_01、force_z0、for...

Vue 项目添加单元测试发现的问题及解决

用 Jest 测试单文件组件 1、安装 Jest 和 Vue Test Utils npm install --save-dev jest @vue/test-utils 2、配置 package.json // package.json { "scripts": { "test": "jest" } } 3、需要安装和配置 vue-j...

数字音频接口

概述 数字音频接口DAI,即Digital Audio Interfaces,顾名思义,DAI表示在板级或板间传输数字音频信号的方式。相比于模拟接口,数字音频接口抗干扰能力更强,硬件设计简单,DAI在音频电路设计中得到越来越广泛的应用。图1和图2对比传统的音频信号和数字音频信号链的区别。 在传统的音频电路(图1)中有麦克风、前置放大器、模/数转换器ADC...

App功能测试的注意点

  好几个月没有写博客记录学习心得了,这次回老家深夜闲来无事写一篇记录下这段时间的面试心得,这次面试过程很多面试官都问APP的有关测试,下面我就自己的认识和工作中的经验来谈谈自己对APP测试的认识: 1.push消息推送测试 检查push消息是否按照指定的业务规则发送。 检查不接收推送消息时,用户不会再接收到push消息。 如果用户设置了免打扰的时...

Android流量统计

项目中需要对Android设备进行流量统计来进行资费结算,所以对Android设备流量统计进行了一些调研。发现流量统计主流上有两种方式 使用系统统计类TrafficStats获取 通过系统文件解析读取 TrafficStats static long getMobileRxBytes() //获取通过Mobile连接收到的字节总数,不包含WiFi s...

博雅大数据机器学习十讲第三讲

点到平面的距离 直线方程:(w_1x_1+w_2x_2+w_0 = 0) 点到直线距离(d = frac {|w_1x_1^{'}+w_2x_2^{'}+w_0|}{sqrt{w^2_1+w^2_2}}) 欧式空间超平面:(w_1x_1+w_2x_2+...+w_dx_d+w_0 = 0) 点到超平面距离: [d = frac {|w_1x_1^{'...