Resthighlevelclient被弃用后,ES 8.x 最新用法 java api

一、ES 8.x 整合springBoot

1、导入依赖
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.12.3</version>
</dependency>

<dependency>
	<groupId>co.elastic.clients</groupId>
	<artifactId>elasticsearch-java</artifactId>
	<version>8.7.1</version>
</dependency>
2、创建 ElasticsearchClient
@Configuration
public class ElasticsearchClientConfig {
    @Bean
    public ElasticsearchClient restHighLevelClient() {
        RestClient restClient = RestClient.builder(
                new HttpHost("localhost", 9200)
        ).build();
        ElasticsearchTransport elasticsearchTransport = new RestClientTransport(restClient,new JacksonJsonpMapper());

        return new ElasticsearchClient(elasticsearchTransport);
    }
}

二、ES java api

1、搜索

    @Resource
    ElasticsearchClient elasticsearchClient;
    @Test
    void contextLoads() throws IOException {
        // 指定索引,设置查询语句 
        SearchRequest searchRequest = 
            new SearchRequest.Builder().index("demo_comment_message")
            .query(Query.of(t -> t.bool(
                s -> s.must(
                        k -> k.match(
                                v -> v.field("desc").query("第一"))
                ).must(v-> v.range(m ->m.field("diggCount").lte(JsonData.of(100))))
        ))).build();
        // 执行查询语句
        SearchResponse<Object> search = elasticsearchClient.search(searchRequest,Object.class);
		// 获取返回结果
        for (Hit<Object> hit : search.hits().hits()) {
            System.out.println(hit.source());
        }
    }

2、单个插入(更新)文档

    @Resource
    ElasticsearchClient elasticsearchClient;

    @Test
    void contextLoads() throws IOException {
      IndexRequest<Product> indexRequest = 
          new IndexRequest.Builder<Product()
          .index("demo_comment_message") // 索引
          .id(product.getVideoId())  // 指定文档Id  也可以不指定,使用ES 自己生成的Id
          .document(product).build();  // 文档内容 (product) 
        // 运行插入语句
        IndexResponse index = elasticsearchClient.index(indexRequest);
        System.out.println(indexRequest.toString());
    }

3、批量插入(更新)文档

   @Resource
   ElasticsearchClient elasticsearchClient;

   @Test
   void contextLoads() throws IOException {
       // 构建插入 List
       List<Product> productList = new ArrayList<>();

       for (int i = 3; i < 10; i++) {
           Product product = new Product();
           product.setCommentId("Demo_" + i);
           product.setDesc("第" + i + "次 测试");
           product.setDiggCount(i * 10L);
           product.setVideoId("Code_" + i);
           productList.add(product);
       }

       BulkRequest.Builder builder = new BulkRequest.Builder().index("demo_comment_message"); // 指定索引
       
       for (Product product : productList) {
           builder.operations(op -> op.index(in -> in.id(product.getVideoId()).document(product)));
       }
       // 运行批量操作
       BulkResponse bulk = elasticsearchClient.bulk(builder.build());
       System.out.println(bulk.errors()); // 返回 false 即为成功 
   }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值