ES增删改查

 @Autowired
    private RestHighLevelClient restHighLevelClient;

    //创建索引
    @Test
    public  void testCreateIndex() throws IOException {
        CreateIndexRequest createIndexRequest = new CreateIndexRequest("jlr");
        IndicesClient indicesClient = restHighLevelClient.indices();
        CreateIndexResponse create = indicesClient.create(createIndexRequest, RequestOptions.DEFAULT);
    }

    //获取索引
    @Test
    public  void testExistIndex() throws IOException {
        GetIndexRequest getIndexRequest = new GetIndexRequest("jlr");
        IndicesClient indicesClient = restHighLevelClient.indices();
        boolean b = indicesClient.exists(getIndexRequest,RequestOptions.DEFAULT);

        System.out.println(b);
    }

    //添加文档
    @Test
    public void testCreateDocument() throws IOException {
        User user = new User("张三1",19);
        //创建请求
        IndexRequest indexRequest = new IndexRequest("jlr");
        indexRequest.id("2");
        indexRequest.timeout("1s");//这种请求超时时间

        //将数据转成json放入请求 中
        indexRequest.source(JSON.toJSONString(user), XContentType.JSON);

        //执行请求
        IndexResponse index = restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);

        System.out.println(index.toString());
        System.out.println(index.status());

    }

    //获取文档
    @Test
    public void testGetDocument() throws IOException {
        //创建请求
        GetRequest getRequest = new GetRequest("jlr","1");

        //执行请求
        GetResponse document = restHighLevelClient.get(getRequest,RequestOptions.DEFAULT);
        //{"_index":"jlr","_type":"_doc","_id":"1","_version":1,"_seq_no":0,"_primary_term":1,"found":true,"_source":{"age":19,"name":"张三"}}
        System.out.println(document.toString());

        //获得一个Map{name=张三, age=19}  我们上面testCreateDocument方法存的值
        System.out.println(document.getSourceAsMap());

        //获取指定的Key对应的val
        Object name = document.getSource().get("name");
        System.out.println(name);
    }


    //更新文档
    @Test
    public void testUpdateDocument() throws IOException {
        //创建一个Update请求
        UpdateRequest updateRequest = new UpdateRequest("jlr","1");
        updateRequest.timeout("1s");//设置超时时间为1s

        User user = new User("李四",22);
        //上面创建文档我们要把POJO类转成json更新肯定也是要的
        updateRequest.doc(JSON.toJSONString(user),XContentType.JSON);

        //执行更新操作
        UpdateResponse update = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);

        System.out.println(update.status());//   ok

    }


    //删除文档
    @Test
    public void testDeleteDocument() throws IOException {
        //创建一个请求
        DeleteRequest deleteRequest = new DeleteRequest("jlr","11");
        deleteRequest.timeout("1s");//设置超时时间为1s


        //执行删除操作操作
        DeleteResponse delete = restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT);

        System.out.println(delete.status());// 删除成功:  ok  失败:NOT_FOUND

    }


    //批量添加文档   项目真实场景
    @Test
    public void testBulkRequest() throws IOException {
        //创建一个批量操作的请求
        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.timeout("100s");//设置超时时间为100s

        //创建批量数据
        List<User> userList = new ArrayList<>();
        userList.add(new User("sb1",1));
        userList.add(new User("sb2",2));
        userList.add(new User("sb3",3));
        userList.add(new User("sb4",4));
        userList.add(new User("sb5",5));
        userList.add(new User("sb6",6));
        userList.add(new User("sb7",7));
        userList.add(new User("sb8",8));


        for (int i=0; i < userList.size(); i++) {
            //这个个ADD方法里的参数可以是DeleteRequest ,UpdateRequest 增删改的请求
            bulkRequest.add(new IndexRequest("jlr")
                    .id(""+(i+10))//不设置id就是随机id类似于UUID
                    .source(JSON.toJSONString(userList.get(i)), XContentType.JSON));
        }

        //执行批量请求
        BulkResponse bulk = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
        System.out.println(!bulk.hasFailures());//bulk.hasFailures返回false成功

    }


    //查询
    //SearchSourceBuilder  构建搜索
    //HighlightBuilder     构建高亮
    //MatchAllQueryBuilder 构建匹配所有
    //TermQueryBuilder     构建匹配
    @Test
    public void testSearch() throws IOException {
        //创建查询请求并指定索引
        SearchRequest serach = new SearchRequest("jlr");

        //构建搜索条件
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        HighlightBuilder highlightBuilder= new HighlightBuilder();
        //searchSourceBuilder.highlighter()//设置高亮

        //查询条件可以用 QueryBuilder工具类实现
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "sb1");//精确查询(属性,筛选的值)
        //MatchAllQueryBuilder matchAllQueryBuildermatchAllQueryBuilder = QueryBuilders.matchAllQuery();//匹配所有

        //搜索条件放入精确查找构造
        searchSourceBuilder.query(termQueryBuilder);
        serach.source(searchSourceBuilder);
        //执行
        SearchResponse search = restHighLevelClient.search(serach, RequestOptions.DEFAULT);

        System.out.println(JSON.toJSONString(search.getHits()));
        SearchHit[] hits = search.getHits().getHits();
        for(SearchHit item: hits) {
            Map<String, Object> sourceAsMap = item.getSourceAsMap();
            System.out.println(sourceAsMap);
        }

    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值