ElasticSearch学习笔记——03Java API

1. 实例化
  1. 代码

    @Configuration
    public class ElasticSearchClientConfig {
        @Bean
        public RestHighLevelClient restHighLevelClient(){
            RestHighLevelClient client = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
            return client;
        }
    }
    
2. 索引
  1. 创建索引

    class DemoApplicationTests {
        @Autowired
        @Qualifier("restHighLevelClient")
        private RestHighLevelClient client;
    
        // 创建索引
        @Test
        public void testCreateIndex() throws IOException {
            CreateIndexRequest request = new CreateIndexRequest("test1");
            CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
            System.out.println(response);
        }
    }
    
  2. 判断索引是否存在

    // 判断索引是否存在
    @Test
    public void testIsExistIndex() throws IOException {
        GetIndexRequest request = new GetIndexRequest("test1");
        boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
        if (exists) {
            System.out.println("已存在");
        } else {
            System.out.println("不存在");
        }
    }
    
  3. 删除索引

    @Test
    public void testDeleteIndex() throws IOException {
        DeleteIndexRequest request = new DeleteIndexRequest("test1");
        AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT);
        System.out.println(response);
    }
    
3. 文档
  1. 添加文档

    @Test
    public void testCreateDocument() throws IOException {
        User user = new User("张三", 12, "男");
        // 指定索引
        IndexRequest request = new IndexRequest("test1");
        // 指定id
        request.id("8");
    
        // 设置超时时间
        // request.timeout("1s");
        request.timeout(TimeValue.timeValueSeconds(1));
    
        // 将我们的数据放入请求
        request.source(JSON.toJSONString(user), XContentType.JSON);
    
        // 客户端发送请求
        IndexResponse response = client.index(request, RequestOptions.DEFAULT);
        System.out.println(response.toString());
        System.out.println(response.status());
    }
    
  2. 查看文档

    @Test
    public void testGetDocument() throws IOException {
        GetRequest request = new GetRequest("test1", "7");
        GetResponse response = client.get(request, RequestOptions.DEFAULT);
        System.out.println(JSON.toJSON(response));
        System.out.println(response.toString());
    }
    
  3. 修改文档

    @Test
    public void testUpdateDocument() throws IOException {
        UpdateRequest request = new UpdateRequest("test1", "7");
        request.timeout("1s");
        User user = new User("李四", 22, "女");
        request.doc(JSON.toJSONString(user), XContentType.JSON);
        UpdateResponse response = client.update(request, RequestOptions.DEFAULT);
        System.out.println(response.toString());
        System.out.println(response.status());
    
    }
    
  4. 删除文档

    @Test
    public void testDeleteDocument() throws IOException {
        DeleteRequest request = new DeleteRequest("test1", "7");
        request.timeout("1s");
        DeleteResponse response = client.delete(request, RequestOptions.DEFAULT);
        System.out.println(response.status());
        System.out.println(response.toString());
    }
    
  5. 批量添加文档

    @Test
    public void testBulkCreateDocument() throws IOException {
        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.timeout("10s");
        ArrayList<User> userList = new ArrayList<>();
        userList.add(new User("用户1", 11, "男"));
        userList.add(new User("用户2", 12, "男"));
        userList.add(new User("用户3", 13, "男"));
        userList.add(new User("用户4", 14, "男"));
        userList.add(new User("用户5", 15, "男"));
        userList.add(new User("用户6", 16, "男"));
    
        for (int i = 0; i < userList.size(); i++) {
            bulkRequest.add(
                new IndexRequest("test1")
                .id(i + 1 + "")
                .source(JSON.toJSONString(userList.get(i)), XContentType.JSON)
            );
        }
    
        BulkResponse response = client.bulk(bulkRequest, RequestOptions.DEFAULT);
        System.out.println(response.status());
        System.out.println(response.toString());
    }
    
  6. 批量删除文档

    @Test
    public void testBulkDeleteDocument() throws IOException {
        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.timeout("10s");
        List<String> idList = Arrays.asList("1", "3");
        for (int i = 0; i < idList.size(); i++) {
            bulkRequest.add(
                new DeleteRequest("test1").id(idList.get(i))
            );
        }
    
        BulkResponse response = client.bulk(bulkRequest, RequestOptions.DEFAULT);
        System.out.println(response.status());
        System.out.println(response.toString());
    }
    
  7. 搜索

    @Test
    public void testSearch() throws IOException {
        SearchRequest searchRequest = new SearchRequest("test1");
        // 构建搜索条件
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
    
        // 构建查询条件, 我们可以使用queryBuilders工具来实现
        // termQuery: 精确匹配
        // matchAllQuery: 匹配所有
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("age", "12");
        sourceBuilder.query(termQueryBuilder);
        sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
    
        searchRequest.source(sourceBuilder);
    
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        System.out.println(searchResponse.getHits());
        System.out.println(JSON.toJSONString(searchResponse.getHits()));
        for (SearchHit documentFields: searchResponse.getHits().getHits()) {
            System.out.println(documentFields.getSourceAsMap());
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值