当前位置: 首页 > news >正文

公司门面网站设计国内logo设计网站

公司门面网站设计,国内logo设计网站,如何看出一个网站有做seo,哈尔滨建设工程文章目录 一,使用Elasticsearch的Java RESTHighLevel Client完成复杂的查询请求1. 创建检索请求 (SearchRequest)2. 构造检索条件 (SearchSourceBuilder)3. 执行检索 (SearchResponse)4. 处理解析结果5. 获取聚合信息 二,AI时代的效率提升 一&#xff0c…

文章目录

  • 一,使用Elasticsearch的Java RESTHighLevel Client完成复杂的查询请求
    • 1. 创建检索请求 (`SearchRequest`)
    • 2. 构造检索条件 (`SearchSourceBuilder`)
    • 3. 执行检索 (`SearchResponse`)
    • 4. 处理解析结果
    • 5. 获取聚合信息
  • 二,AI时代的效率提升

一,使用Elasticsearch的Java RESTHighLevel Client完成复杂的查询请求

前面es进阶学习中,我们学习过复杂的DSL查询。

POST bank/_search
{"query": {"match": {"address": {"query": "Mill"}}},"aggregations": {"ageAgg": {"terms": {"field": "age","size": 10}},"ageAvg": {"avg": {"field": "age"}},"balanceAvg": {"avg": {"field": "balance"}}}
}

如何使用Java客户端执行复杂的查询呢?

使用Elasticsearch的Java REST High-Level Client执行一个复杂的带有聚合的搜索请求。

1. 创建检索请求 (SearchRequest)

  • 创建 SearchRequest 对象:

    • SearchRequest searchRequest = new SearchRequest();
  • 指定索引:

    • searchRequest.indices("bank");

2. 构造检索条件 (SearchSourceBuilder)

  • 创建 SearchSourceBuilder 对象:

    • SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
  • 设置查询条件:

    • sourceBuilder.query(QueryBuilders.matchQuery("address", "Mill"));
  • 添加聚合:

    • 按年龄分组的聚合:

      • TermsAggregationBuilder ageAgg = AggregationBuilders.terms("ageAgg").field("age").size(10);
      • sourceBuilder.aggregation(ageAgg);
    • 计算平均年龄:

      • AvgAggregationBuilder ageAvg = AggregationBuilders.avg("ageAvg").field("age");
      • sourceBuilder.aggregation(ageAvg);
    • 计算平均薪资:

      • AvgAggregationBuilder balanceAvg = AggregationBuilders.avg("balanceAvg").field("balance");
      • sourceBuilder.aggregation(balanceAvg);
  • 打印检索条件:

    • System.out.println("检索条件:" + sourceBuilder);
  • 将检索条件添加到 SearchRequest:

    • searchRequest.source(sourceBuilder);

3. 执行检索 (SearchResponse)

  • 执行搜索请求:

    • SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
  • 打印检索结果:

    • System.out.println("检索结果:" + searchResponse);

4. 处理解析结果

  • 获取搜索命中的文档:

    • SearchHits hits = searchResponse.getHits();
    • SearchHit[] searchHits = hits.getHits();
  • 遍历并处理每个文档:

    • for (SearchHit searchHit : searchHits) {String sourceAsString = searchHit.getSourceAsString();Account account = JSON.parseObject(sourceAsString, Account.class);System.out.println(account);
      }
      

5. 获取聚合信息

  • 获取聚合结果:

    • Aggregations aggregations = searchResponse.getAggregations();
  • 处理年龄分布的聚合:

    • Terms ageAgg1 = aggregations.get("ageAgg");
      for (Terms.Bucket bucket : ageAgg1.getBuckets()) {String keyAsString = bucket.getKeyAsString();System.out.println("年龄:" + keyAsString + " ==> " + bucket.getDocCount());
      }
      
  • 处理平均年龄的聚合:

    • Avg ageAvg1 = aggregations.get("ageAvg");
      System.out.println("平均年龄:" + ageAvg1.getValue());
      
  • 处理平均薪资的聚合:

    • Avg balanceAvg1 = aggregations.get("balanceAvg");
      System.out.println("平均薪资:" + balanceAvg1.getValue());
      

完整代码如下:

	/*** 复杂检索*/public void searchData() throws IOException {//1. 创建检索请求SearchRequest searchRequest = new SearchRequest();//1.1)指定索引searchRequest.indices("bank");//1.2)构造检索条件SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.query(QueryBuilders.matchQuery("address", "Mill"));//1.2.1)按照年龄分布进行聚合TermsAggregationBuilder ageAgg = AggregationBuilders.terms("ageAgg").field("age").size(10);sourceBuilder.aggregation(ageAgg);//1.2.2)计算平均年龄AvgAggregationBuilder ageAvg = AggregationBuilders.avg("ageAvg").field("age");sourceBuilder.aggregation(ageAvg);//1.2.3)计算平均薪资AvgAggregationBuilder balanceAvg = AggregationBuilders.avg("balanceAvg").field("balance");sourceBuilder.aggregation(balanceAvg);System.out.println("检索条件:" + sourceBuilder);searchRequest.source(sourceBuilder);//2. 执行检索SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);System.out.println("检索结果:" + searchResponse);//3. 将检索结果封装为BeanSearchHits hits = searchResponse.getHits();SearchHit[] searchHits = hits.getHits();for (SearchHit searchHit : searchHits) {String sourceAsString = searchHit.getSourceAsString();Account account = JSON.parseObject(sourceAsString, Account.class);System.out.println(account);}//4. 获取聚合信息Aggregations aggregations = searchResponse.getAggregations();Terms ageAgg1 = aggregations.get("ageAgg");for (Terms.Bucket bucket : ageAgg1.getBuckets()) {String keyAsString = bucket.getKeyAsString();System.out.println("年龄:" + keyAsString + " ==> " + bucket.getDocCount());}Avg ageAvg1 = aggregations.get("ageAvg");System.out.println("平均年龄:" + ageAvg1.getValue());Avg balanceAvg1 = aggregations.get("balanceAvg");System.out.println("平均薪资:" + balanceAvg1.getValue());}

二,AI时代的效率提升

相对于DSL,使用Java客户端来完成复杂的请求,代码是比较复杂不好理解的。

DSL相对清晰、容易理解。

所以,我们可以先根据需求,写好DSL,然后用大模型工具比如通义千问、Kimi、ChatGPT等将DSL转换为Java代码,这样我们就无需逐行编写复杂难懂的Java代码了,只需要在测试过程中进行微调即可。

http://www.yayakq.cn/news/115331/

相关文章:

  • 长沙网站优化电话微信公众号怎么做微网站
  • 自己做网站怎么做高端品牌网站建设哪家好
  • 网站正在建设中html5wordpress根目录
  • 网站拒绝了您的访问江门百度seo
  • 湖北省建设厅官方网站资料网品牌网站建设荐选蝌蚪
  • 行业协会网站织梦模板微商货源网站源码
  • 湘潭高端网站建设互联网营销师培训大纲
  • 宁波网站制作方案网店运营在哪里学比较好些
  • 手机网站相册代码网站备案需要审核多久
  • 汉沽做网站博物馆装修厂家
  • 做网站的困难上海建网站计划
  • 株洲专业网站建设品牌工业产品外观设计公司
  • 大红门做网站哪个网站有淘宝做图的素材
  • 淘宝网站网页图片怎么做石家庄网站建设找哪家好
  • 公司网站上传文章做只在自己电脑上的网站
  • 网站后台域名石家庄新闻频道直播
  • 怎样能有个人网站阜阳市建设工程网站
  • 优化网站建设人员组成wordpress 实现 wiki
  • 网站建站在线制作山东网建设
  • 宁波市建设工程检测协会网站网站建设项目总结
  • 美橙网站建设经典案例整合营销传播名词解释
  • 电子商务网站建设实训个人总结毕业作品是做网站的答辩会问什么
  • 宁波网站建设的过程wordpress 置顶
  • 秦皇岛网站建设兼职公益建设网站的作用
  • 图书馆网站建设调查问卷设计制作实践活动100字
  • 修改网站模板网站建设哈尔滨app开发2
  • 视频网站的服务器建设做pc端网站价位
  • 国外做ae模板网站大全网页制作培训班前景
  • 网站掉排名崇文企业网站建设公司
  • 梅林做网站深圳网络推广顾问