Elasticsearch——JAVA的API操作


先开启ES服务器

随后应用IDEA,调用JAVA的API进行 操作

基础操作

为方便后面数据的调用,创建User类

public class User {
    private String name;
    private String sex;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
创建客户端
    public static void main(String[] args) throws IOException {

        //创建ES客户端
        RestHighLevelClient esClient = new RestHighLevelClient(
                RestClient.builder(new HttpHost("localhost", 9200, "http"))
        );

        //关闭ES 客户端
        esClient.close();
    }
创建索引
    public static void main(String[] args) throws IOException {

        RestHighLevelClient esClient = new RestHighLevelClient(
                RestClient.builder(new HttpHost("localhost", 9200, "http"))
        );

        //创建索引
        CreateIndexRequest request = new CreateIndexRequest("user");
        CreateIndexResponse createIndexResponse = esClient.indices().create(request, RequestOptions.DEFAULT);

        //响应状态
        boolean acknowledged = createIndexResponse.isAcknowledged();
        System.out.println("索引操作:" + acknowledged);
        
        esClient.close();
    }
查询索引
public static void main(String[] args) throws IOException {

        RestHighLevelClient esClient = new RestHighLevelClient(
                RestClient.builder(new HttpHost("localhost", 9200, "http"))
        );

        //查询索引
        GetIndexRequest request = new GetIndexRequest("user");
        GetIndexResponse getIndexResponse = esClient.indices().get(request, RequestOptions.DEFAULT);

        //响应状态
        System.out.println(getIndexResponse.getAliases());
        System.out.println(getIndexResponse.getMappings());
        System.out.println(getIndexResponse.getSettings());

        esClient.close();
    }
索引删除
    public static void main(String[] args) throws IOException {

        RestHighLevelClient esClient = new RestHighLevelClient(
                RestClient.builder(new HttpHost("localhost", 9200, "http"))
        );

        //删除索引
        DeleteIndexRequest request = new DeleteIndexRequest("user");
        AcknowledgedResponse response = esClient.indices().delete(request, RequestOptions.DEFAULT);

        //响应状态
        System.out.println(response.isAcknowledged());

        esClient.close();
    }
创建文档
    public static void main(String[] args) throws IOException {

        RestHighLevelClient esClient = new RestHighLevelClient(
                RestClient.builder(new HttpHost("localhost", 9200, "http"))
        );

        //插入数据
        IndexRequest request = new IndexRequest();
        request.index("user").id("1001");

        User user = new User();
        user.setName("zhangsan");
        user.setAge(30);
        user.setSex("男");

        //向ES插入数据,必须将数据转换为JSON格式
        ObjectMapper mapper = new ObjectMapper();
        String userJson = mapper.writeValueAsString(user);
        request.source(userJson, XContentType.JSON);


        IndexResponse response = esClient.index(request, RequestOptions.DEFAULT);

        System.out.println(response.getResult());

        esClient.close();
    }
得到文档
    public static void main(String[] args) throws IOException {

        RestHighLevelClient esClient = new RestHighLevelClient(
                RestClient.builder(new HttpHost("localhost", 9200, "http"))
        );

        //查询数据
        GetRequest request = new GetRequest();
        request.index("user").id("1001");
        GetResponse response = esClient.get(request, RequestOptions.DEFAULT);

        System.out.println(response.getSourceAsString());

        esClient.close();
    }
删除文档
    public static void main(String[] args) throws IOException {

        RestHighLevelClient esClient = new RestHighLevelClient(
                RestClient.builder(new HttpHost("localhost", 9200, "http"))
        );

        //删除数据
        DeleteRequest request = new DeleteRequest();
        request.index("user").id("1001");

        DeleteResponse response = esClient.delete(request, RequestOptions.DEFAULT);
        System.out.println(response.toString());
        
        esClient.close();
    }

批量操作

批量插入
    public static void main(String[] args) throws IOException {

        RestHighLevelClient esClient = new RestHighLevelClient(
                RestClient.builder(new HttpHost("localhost", 9200, "http"))
        );

        //批量插入数据
        BulkRequest request = new BulkRequest();
        IndexRequest source1 = new IndexRequest().index("user").id("1001").source(XContentType.JSON, "name", "zhangsan", "age", 30, "sex", "男");
        IndexRequest source2 = new IndexRequest().index("user").id("1002").source(XContentType.JSON, "name", "lisi", "age", 30, "sex", "女");
        IndexRequest source3 = new IndexRequest().index("user").id("1003").source(XContentType.JSON, "name", "wangwu1", "age", 40, "sex", "男");
        IndexRequest source4 = new IndexRequest().index("user").id("1004").source(XContentType.JSON, "name", "wangwu2", "age", 40, "sex", "女");
        IndexRequest source5 = new IndexRequest().index("user").id("1005").source(XContentType.JSON, "name", "wangwu3", "age", 50, "sex", "男");
        IndexRequest source6 = new IndexRequest().index("user").id("1006").source(XContentType.JSON, "name", "wangwu4", "age", 50, "sex", "男");

        request.add(source1);
        request.add(source2);
        request.add(source3);
        request.add(source4);
        request.add(source5);
        request.add(source6);


        BulkResponse bulk = esClient.bulk(request, RequestOptions.DEFAULT);

        System.out.println(bulk.getTook());
        System.out.println(bulk.getItems());

        esClient.close();
    }
批量删除
public static void main(String[] args) throws IOException {

        RestHighLevelClient esClient = new RestHighLevelClient(
                RestClient.builder(new HttpHost("localhost", 9200, "http"))
        );

        //批量删除数据
        BulkRequest request = new BulkRequest();
        DeleteRequest source1 = new DeleteRequest().index("user").id("1001");
        DeleteRequest source2 = new DeleteRequest().index("user").id("1002");
        DeleteRequest source3 = new DeleteRequest().index("user").id("1003");

        request.add(source1);
        request.add(source2);
        request.add(source3);

        BulkResponse bulk = esClient.bulk(request, RequestOptions.DEFAULT);

        System.out.println(bulk.getTook());
        System.out.println(bulk.getItems());

        esClient.close();
    }

高级操作

public static void main(String[] args) throws IOException {

        RestHighLevelClient esClient = new RestHighLevelClient(
                RestClient.builder(new HttpHost("localhost", 9200, "http"))
        );

        //1、查询索引中全部的数据
//        SearchRequest request = new SearchRequest();
//        request.indices("user");
//
//        SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
//        request.source(query);
//
//        SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
//        SearchHits hits = searchResponse.getHits();
//
//        System.out.println(hits.getTotalHits());
//        System.out.println(searchResponse.getTook());
//        for (SearchHit hit : hits) {
//            System.out.println(hit.getSourceAsString());
//        }

        //2.条件查询:termQuery
//        SearchRequest request = new SearchRequest();
//        request.indices("user");
//
//        SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.termQuery("age",30));
//        request.source(query);
//
//        SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
//        SearchHits hits = searchResponse.getHits();
//
//        System.out.println(hits.getTotalHits());
//        System.out.println(searchResponse.getTook());
//        for (SearchHit hit : hits) {
//            System.out.println(hit.getSourceAsString());
//        }

//        //3.分页查询
//        SearchRequest request = new SearchRequest();
//        request.indices("user");
//
//        SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
//        query.from(2);
//        query.size(2);
//        request.source(query);
//
//        SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
//        SearchHits hits = searchResponse.getHits();
//
//        System.out.println(hits.getTotalHits());
//        System.out.println(searchResponse.getTook());
//        for (SearchHit hit : hits) {
//            System.out.println(hit.getSourceAsString());
//        }

//        //4.查询排序
//        SearchRequest request = new SearchRequest();
//        request.indices("user");
//
//        SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
//        query.sort("age", SortOrder.DESC);
//
//        request.source(query);
//
//        SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
//        SearchHits hits = searchResponse.getHits();
//
//        System.out.println(hits.getTotalHits());
//        System.out.println(searchResponse.getTook());
//        for (SearchHit hit : hits) {
//            System.out.println(hit.getSourceAsString());
//        }

//        //5.过滤字段
//        SearchRequest request = new SearchRequest();
//        request.indices("user");
//
//        SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
//        String[] excludes = {};
//        String[] includes = {"name"};
//        query.fetchSource(includes,excludes);
//
//        request.source(query);
//
//        SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
//        SearchHits hits = searchResponse.getHits();
//
//        System.out.println(hits.getTotalHits());
//        System.out.println(searchResponse.getTook());
//        for (SearchHit hit : hits) {
//            System.out.println(hit.getSourceAsString());
//        }

//        //6.组合查询
//        SearchRequest request = new SearchRequest();
//        request.indices("user");
//
//        SearchSourceBuilder query = new SearchSourceBuilder();
//        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//
        boolQueryBuilder.must(QueryBuilders.matchQuery("age", 30));
        boolQueryBuilder.must(QueryBuilders.matchQuery("sex","男"));
//        boolQueryBuilder.should(QueryBuilders.matchQuery("age", 30));
//        boolQueryBuilder.should(QueryBuilders.matchQuery("age", 40));
//
//        query.query(boolQueryBuilder);
//        request.source(query);
//
//        SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
//        SearchHits hits = searchResponse.getHits();
//
//        System.out.println(hits.getTotalHits());
//        System.out.println(searchResponse.getTook());
//        for (SearchHit hit : hits) {
//            System.out.println(hit.getSourceAsString());
//        }

//        //7.范围查询
//        SearchRequest request = new SearchRequest();
//        request.indices("user");
//
//        SearchSourceBuilder query = new SearchSourceBuilder();
//        RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("age");
//        rangeQuery.gte(30);
//        rangeQuery.lte(40);
//
//        query.query(rangeQuery);
//
//        request.source(query);
//
//        SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
//        SearchHits hits = searchResponse.getHits();
//
//        System.out.println(hits.getTotalHits());
//        System.out.println(searchResponse.getTook());
//        for (SearchHit hit : hits) {
//            System.out.println(hit.getSourceAsString());
//        }

//        //8.模糊查询
//        SearchRequest request = new SearchRequest();
//        request.indices("user");
//
//        SearchSourceBuilder query = new SearchSourceBuilder();
//        FuzzyQueryBuilder fuzziness = QueryBuilders.fuzzyQuery("name", "wangwu").fuzziness(Fuzziness.ONE);
//        query.query(fuzziness);
//
//        request.source(query);
//
//        SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
//        SearchHits hits = searchResponse.getHits();
//
//        System.out.println(hits.getTotalHits());
//        System.out.println(searchResponse.getTook());
//        for (SearchHit hit : hits) {
//            System.out.println(hit.getSourceAsString());
//        }

//        //9.高亮查询
//        SearchRequest request = new SearchRequest();
//        request.indices("user");
//
//        SearchSourceBuilder query = new SearchSourceBuilder();
//        TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("name", "zhangsan");
//
//        HighlightBuilder highlightBuilder = new HighlightBuilder();
//        highlightBuilder.preTags("<font color='red'>");
//        highlightBuilder.postTags("</font>");
//        highlightBuilder.field("name");
//
//        query.highlighter();
//        query.query(termsQueryBuilder);
//        request.source(query);
//
//        SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
//        SearchHits hits = searchResponse.getHits();
//
//        System.out.println(hits.getTotalHits());
//        System.out.println(searchResponse.getTook());
//        for (SearchHit hit : hits) {
//            System.out.println(hit.getSourceAsString());
//        }

//        //10.聚合查询
//        SearchRequest request = new SearchRequest();
//        request.indices("user");
//
//        SearchSourceBuilder query = new SearchSourceBuilder();
//
//        AggregationBuilder aggregationBuilder = AggregationBuilders.max("maxAge").field("age");
//
//        query.aggregation(aggregationBuilder);
//
//        request.source(query);
//
//        SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
//        SearchHits hits = searchResponse.getHits();
//
//        System.out.println(hits.getTotalHits());
//        System.out.println(searchResponse.getTook());
//        for (SearchHit hit : hits) {
//            System.out.println(hit.getSourceAsString());
//        }

        //11.分组查询
        SearchRequest request = new SearchRequest();
        request.indices("user");

        SearchSourceBuilder query = new SearchSourceBuilder();

        AggregationBuilder aggregationBuilder = AggregationBuilders.terms("ageGroup").field("age");
        query.aggregation(aggregationBuilder);

        request.source(query);

        SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);

        SearchHits hits = searchResponse.getHits();

        System.out.println(hits.getTotalHits());
        System.out.println(searchResponse.getTook());
        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }

        esClient.close();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值