Elasticsearch Java API基础

索引

创建索引

    // 创建索引
    @Test
    public void esTest01() throws IOException {

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

        // 创建索引请求
        CreateIndexRequest request = new CreateIndexRequest("user");

        // 发送请求
        CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);

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

        // 关闭客户端
        client.close();

    }

查询索引

public void searchIndexTest() throws IOException {

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

    // 查询索引请求
    GetIndexRequest request = new GetIndexRequest("user");

    // 发送请求
    GetIndexResponse response = client.indices().get(request, RequestOptions.DEFAULT);

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

    // 关闭客户端
    client.close();
}

删除索引

 public void deleteIndexTest() throws IOException {

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

        // 创建索引请求
        DeleteIndexRequest request = new DeleteIndexRequest("user");

        // 发送请求
        AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT);

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

        // 关闭客户端
        client.close();
    }

文档

因为在一个Java文件里写的,就把创建客户端关闭客户端写在调用外了。

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

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

        // 调用测试方法
        xxxTest(client);

        // 关闭客户端
        client.close();
    }

插入

单条插入
public void insertDocumentTest() throws IOException {
        // 创建客户端
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
        );

        // 创建索引请求
        IndexRequest request = new IndexRequest();
        request.index("user");

        // 设置数据
        UserTest user = new UserTest("张三", 18, "男");

        // 对象转json
        ObjectMapper mapper = new ObjectMapper();
        String userJson = mapper.writeValueAsString(user);
        request.source(userJson, XContentType.JSON);

        // 发送请求
        IndexResponse response = client.index(request, RequestOptions.DEFAULT);

        // 响应
        System.out.println(response.getResult());

        // 关闭客户端
        client.close();
    }

批量插入
private static void batchInsertDocumentTest(RestHighLevelClient client) throws Exception {

        // 创建请求
        BulkRequest request = new BulkRequest();

        // 设置数据
        UserTest user1 = new UserTest("zhangsan", 18, "男");
        UserTest user2 = new UserTest("zhangsan1", 20, "女");
        UserTest user3 = new UserTest("zhangsan12", 21, "男");

        // 对象转json
        ObjectMapper mapper = new ObjectMapper();
        String user1Json = mapper.writeValueAsString(user1);
        String user2Json = mapper.writeValueAsString(user2);
        String user3Json = mapper.writeValueAsString(user3);

        // 添加请求
        request.add(new IndexRequest("user").source(user1Json,XContentType.JSON));
        request.add(new IndexRequest("user").source(user2Json,XContentType.JSON));
        request.add(new IndexRequest("user").source(user3Json,XContentType.JSON));

        // 发送请求
        BulkResponse responses = client.bulk(request, RequestOptions.DEFAULT);

        // 响应
        System.out.println(responses.status());
    }

修改

private static void updateDocumentTest() throws Exception {
    // 创建客户端
    RestHighLevelClient client = new RestHighLevelClient(
            RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
    );

    // 创建索引请求
    UpdateRequest request = new UpdateRequest();
    request.index("user").id("iBkvwo4BTeceah33aM8P");

    // 设置数据
    request.doc(XContentType.JSON, "name", "王五");

    // 发送请求
    UpdateResponse response = client.update(request, RequestOptions.DEFAULT);

    // 响应
    System.out.println(response.getGetResult());

    // 关闭客户端
    client.close();
}

查询

全量查询
    private static void queryAllDocumentTest(RestHighLevelClient client) throws Exception {

        // 创建请求
        SearchRequest request = new SearchRequest("user");

        request.source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()));

        // 发送请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

        // 响应
        SearchHits hits = response.getHits();
        SearchHit[] searchHits = hits.getHits();
        for (SearchHit hit : searchHits) {
            System.out.println(hit.getId());
            System.out.println(hit.getSourceAsString());
        }
    }

条件查询
    private static void queryDocumentTest(RestHighLevelClient client) throws Exception {

        // 创建请求
        SearchRequest request = new SearchRequest("user");

        // 查询条件
//        SearchSourceBuilder query = new SearchSourceBuilder()
//                .query(QueryBuilders.matchQuery("name", "三"));
        SearchSourceBuilder query = new SearchSourceBuilder();

        // 分页
        query.from(0);
        query.size(1);
        // 排序
        query.sort("age", SortOrder.ASC);
        // 过滤字段
        query.fetchSource(new String[]{"name", "age"}, new String[]{"sex"});

        // 设置查询条件
        request.source(query);

        // 发送请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

        // 响应
        SearchHits hits = response.getHits();
        SearchHit[] searchHits = hits.getHits();
        for (SearchHit hit : searchHits) {
            System.out.println(hit.getId());
            System.out.println(hit.getSourceAsString());
        }
    }

复合查询
private static void boolQueryDocumentTest(RestHighLevelClient client) throws Exception {

        // 创建请求
        SearchRequest request = new SearchRequest("user");

        SearchSourceBuilder query = new SearchSourceBuilder();
        // 复合查询
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//        // 必须满足条件,类似sql中的and
//        boolQueryBuilder.must(QueryBuilders.matchQuery("name", "李"));
//        // 必须不满足条件,类似sql中的not
        boolQueryBuilder.mustNot(QueryBuilders.matchQuery("six", "男"));
//        // 至少满足条件,类似sql中的or
//        boolQueryBuilder.should(QueryBuilders.matchQuery("age", 18));
//        boolQueryBuilder.should(QueryBuilders.matchQuery("name", "李"));

        query.query(boolQueryBuilder);
        request.source(query);

        // 发送请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

        // 响应
        SearchHits hits = response.getHits();
        SearchHit[] searchHits = hits.getHits();
        for (SearchHit hit : searchHits) {
            System.out.println(hit.getId());
            System.out.println(hit.getSourceAsString());
        }

    }

范围查询
private static void rangeQueryDocumentTest(RestHighLevelClient client) throws Exception {

        // 创建请求
        SearchRequest request = new SearchRequest("user");

        // 查询条件
        SearchSourceBuilder query = new SearchSourceBuilder()
                .query(QueryBuilders.rangeQuery("age").gte(18).lte(20));

        request.source(query);

        // 发送请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

        // 响应
        SearchHits hits = response.getHits();
        SearchHit[] searchHits = hits.getHits();
        for (SearchHit hit : searchHits) {
            System.out.println(hit.getId());
            System.out.println(hit.getSourceAsString());
        }
    }

模糊查询
private static void fuzzyQueryDocumentTest(RestHighLevelClient client) throws Exception {

        // 创建请求
        SearchRequest request = new SearchRequest("user");

        // 查询条件
        SearchSourceBuilder query = new SearchSourceBuilder()
                .query(QueryBuilders.fuzzyQuery("name", "zhangsan").fuzziness(Fuzziness.ONE));

        request.source(query);

        // 发送请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

        // 响应
        SearchHits hits = response.getHits();
        SearchHit[] searchHits = hits.getHits();
        for (SearchHit hit : searchHits) {
            System.out.println(hit.getId());
            System.out.println(hit.getSourceAsString());
        }
    }

删除

单条删除
private static void deleteDocumentTest(RestHighLevelClient client) throws Exception {

        // 创建请求
        DeleteRequest request = new DeleteRequest();
        request.index("user").id("iBkvwo4BTeceah33aM8P");

        // 发送请求
        client.delete(request, RequestOptions.DEFAULT);
    }

批量删除
    private static void batchDeleteDocumentTest(RestHighLevelClient client) throws Exception {

        // 创建请求
        BulkRequest request = new BulkRequest();

        // 添加请求
        request.add(new DeleteRequest("user").id("iRkzwo4BTeceah33F88"));
        request.add(new DeleteRequest("user").id("ihkzwo4BTeceah33x8_n"));
        request.add(new DeleteRequest("user").id("ixm7wo4BTeceah33j8-D"));
        request.add(new DeleteRequest("user").id("jBm7wo4BTeceah33j8-D"));
        request.add(new DeleteRequest("user").id("jRm7wo4BTeceah33j8-D"));

        // 发送请求
        BulkResponse responses = client.bulk(request, RequestOptions.DEFAULT);

        // 响应
        System.out.println(responses.status());
    }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ming__GoGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值