ElasticSeach的Api操作学习

目录:/home/devops/

1.在bin目录下 执行命令./elasticsearch -d    后台启动命令

2. kill -9 elasticsearch的进程号   后台停止

3. nohup ./kibana &     在bin目录下 kibana后台启动

4.  fuser -n tcp 5601   查找kibana的进程号

5.  kill -9  kibana的进程号  后台停止

 

1.创建es连接,输入账号密码 

 final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials("elastic", "elastic"));
        //es账号密码(默认用户名为elastic,因为在设置密码时其中的一个用户就是elastic)
        RestHighLevelClient esclient =new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("172.16.8.35",9200)
                ).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                        httpClientBuilder.disableAuthCaching();
                        return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    }
                })
        );

2.创建es索引:user

CreateIndexRequest request = new CreateIndexRequest("user");
        CreateIndexResponse createIndexResponse = esclient.indices().create(request, RequestOptions.DEFAULT);

        boolean acknowledged = createIndexResponse.isAcknowledged();
        System.out.println("创建索引操作结果:" + acknowledged);

3.插入user索引的数据

        //插入数据
        IndexRequest indexRequest = new IndexRequest();
        //需要插入的数据  index|索引  id|唯一标识
        indexRequest.index("user").id("1020");
        User user = new User();
        user.setName("李为");
        user.setSex("男");
        user.setAge(27);
        // 向es插入数据,必须将数据转换为json  jackson
        ObjectMapper mapper=new ObjectMapper();
        String userjson = mapper.writeValueAsString(user);//对象转str
        indexRequest.source(userjson, XContentType.JSON);//index为user,id1020的数据
        IndexResponse index = esclient.index(indexRequest, RequestOptions.DEFAULT);
        System.out.println(index);       

4.查询索引user下的数据

        //这个对象增加查询条件
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        //指定只返回user对象的name字段
        searchSourceBuilder.fetchSource(new String[]{"name"}, new String[]{});
        //根据name等于李为查询
        BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
        boolQueryBuilder.must(QueryBuilders.matchQuery("name", "李为"));
        searchSourceBuilder.query(boolQueryBuilder);
        //es查询对象
        SearchRequest searchRequest = new SearchRequest("user");
        //把条件设置到es查询数据里面查询
        searchRequest.source(searchSourceBuilder);
        log.info("es查询语句:{}", searchRequest.source());
        SearchResponse searchResponse = esclient.search(searchRequest, 
        RequestOptions.DEFAULT);
        if (searchResponse.status().equals(RestStatus.OK)) {
            SearchHits hits = searchResponse.getHits();
            for(SearchHit hit:hits){
                User user1 = JsonUtil.toBean(hit.getSourceAsString(), User.class);
                System.out.println(user1);
            }
        }

5.更新索引为user的id为1020的数据

        //把user索引id为1020的数据性别和年龄分别改为女和18
        UpdateRequest update = new UpdateRequest();
        update.index("user").id("1020");
        update.doc(XContentType.JSON,"sex","女","age",18);
        esclient.update(update, RequestOptions.DEFAULT);

6.删除索引user下id为1020的数据

        DeleteRequest deleteRequest = new DeleteRequest();
        deleteRequest.index("user").id("1020");
        esclient.delete(deleteRequest, RequestOptions.DEFAULT);

7.索引下user的数据批量插入

        //批量插入索引user下的数据
        BulkRequest request = new BulkRequest();
        request.add(new IndexRequest().index("user").id("1010").source(XContentType.JSON,
                "name","李伟","age",27,"sex","男"));
        request.add(new IndexRequest().index("user").id("1011").source(XContentType.JSON,
                "name","lisi","age",22,"sex","女"));
        request.add(new IndexRequest().index("user").id("1012").source(XContentType.JSON,
                "name","wangwu","age",26,"sex","女"));
        request.add(new IndexRequest().index("user").id("1013").source(XContentType.JSON,
                "name","zhaoliu","age",27,"sex","女"));
        esclient.bulk(request, RequestOptions.DEFAULT);

8.批量删除user索引下的数据

        //批量删除user索引下的数据
        BulkRequest request = new BulkRequest();
        request.add(new DeleteRequest().index("user").id("1010"));
        request.add(new DeleteRequest().index("user").id("1011"));
        request.add(new DeleteRequest().index("user").id("1012"));
        request.add(new DeleteRequest().index("user").id("1013"));
        esclient.bulk(request, RequestOptions.DEFAULT);

 9.删除user索引

        //删除索引user
        DeleteIndexRequest shoppingg = new DeleteIndexRequest("user");​
        AcknowledgedResponse delete = esclient.indices().delete(shoppingg, 
        RequestOptions.DEFAULT);

10.查询user索引

          //查询user索引 要索引user存在的情况,否则会报错索引不存在 
          GetIndexRequest user= new GetIndexRequest("user");
          GetIndexResponse response = esclient.indices().get(user, 
          RequestOptions.DEFAULT);​
          System.out.println(response.getAliases());
          System.out.println(response.getDataStreams());
          System.out.println(response.getDefaultSettings());
          System.out.println(response.getIndices());
          System.out.println(response.getMappings());
          System.out.println(response.getSettings());

11.分页查询user索引的数据

        //查询user索引下第0页的一页3条数据
        SearchRequest searchRequest = new SearchRequest();
        SearchSourceBuilder query = new 
        SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
        query.from(0);//当前页
        query.size(3);//每页条数
        searchRequest.indices("user");
        searchRequest.source(query);
        SearchResponse search = esclient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = search.getHits();
        for(SearchHit hit:hits){
            System.out.println(hit.getSourceAsString());
        }

12.组合查询索引user的数据

       SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("user");
        SearchSourceBuilder builder = new SearchSourceBuilder();
        BoolQueryBuilder bool = new BoolQueryBuilder();
        bool.must(QueryBuilders.matchQuery("sex","男"));
        bool.must(QueryBuilders.matchQuery("age",27));
       //组合查询
        builder.query(bool);
        searchRequest.source(builder);

        SearchResponse search = esclient.search(searchRequest, RequestOptions.DEFAULT);
        ///关闭连接
        SearchHits hits = search.getHits();
        esclient.close();
        for(SearchHit hit:hits){
            System.out.println(hit.getSourceAsString());
        }

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值