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

建设网站需要准备哪些内容网站建设 选猴王网络

建设网站需要准备哪些内容,网站建设 选猴王网络,推广员网站怎么做,40岁了开始学室内设计es 的 HighLevelClient存在es源代码的引用,结合springboot使用时,会存在es版本的冲突,这里记录下解决冲突和使用方式(es已经不建议使用这个了)。 注意es服务端的版本需要与client的版本对齐,否则返回数据可…

es 的 HighLevelClient存在es源代码的引用,结合springboot使用时,会存在es版本的冲突,这里记录下解决冲突和使用方式(es已经不建议使用这个了)。

注意es服务端的版本需要与client的版本对齐,否则返回数据可能会解析失败!!!

文档地址:Java High Level REST Client | Java REST Client [7.17] | Elastic

1、首先创建个java springboot项目

源码地址:https://github.com/a66245753/es-7-high-level-client.git

pom依赖文件如下,在 dependencyManagement 里解决springboot引起的版本冲突-

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.david</groupId><artifactId>es-7-high-level-client</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>es-7-high-level-client</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><elastic.version>7.17.28</elastic.version></properties><dependencyManagement><dependencies><!--规定版本,解决springboot引起的版本冲突--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>${elastic.version}</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>${elastic.version}</version></dependency><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>${elastic.version}</version></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- Lombok 依赖 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version><scope>provided</scope></dependency></dependencies>
</project>

2、配置es client为java bean

@Configuration
public class EsClientConfig {@Beanpublic RestHighLevelClient restHighLevelClient(){return new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));}
}

2.1 es id查询数据

/*** id查询** @return* @throws IOException*/@PostMapping("/get")public ResponseEntity<Object> get() throws IOException {GetRequest getRequest = new GetRequest("ssp_ad_union_log_202403");getRequest.id("fcBZZZUBJ3krEJ13KbOG");GetResponse response = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);return new ResponseEntity<>(response.getSourceAsMap(), HttpStatus.OK);}

2.2 es 多个id查询数据

/*** ids查询** @return* @throws IOException*/@PostMapping("/getBatch")public ResponseEntity<Object> getBatch() throws IOException {MultiGetRequest multiGetRequest = new MultiGetRequest();multiGetRequest.add("ssp_ad_union_log_202403","fcBZZZUBJ3krEJ13KbOG");multiGetRequest.add("ssp_ad_union_log_202403","VsBZZZUBJ3krEJ13KbOG");MultiGetResponse multiGetItemResponses = restHighLevelClient.multiGet(multiGetRequest, RequestOptions.DEFAULT);return new ResponseEntity<>(multiGetItemResponses.getResponses(), HttpStatus.OK);}

2.3 search 分页

/*** 分页查询** @param request* @return* @throws IOException*/@PostMapping("/search")public ResponseEntity<EsSearchResult> search(@RequestBody EsSearchRequest request) throws IOException {SearchRequest searchRequest = new SearchRequest(request.getIndex());// 构建搜索请求SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.trackTotalHits(true);sourceBuilder.from((request.getPageIndex() - 1) * request.getPageSize());sourceBuilder.size(request.getPageSize());searchRequest.source(sourceBuilder);BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();if (request.getEqualsParams() != null && !request.getEqualsParams().isEmpty()) {for (Map.Entry<String, Object> entry : request.getEqualsParams().entrySet()) {queryBuilder.filter(QueryBuilders.termQuery(entry.getKey(), entry.getValue()));}}if (request.getLikeParams() != null && !request.getLikeParams().isEmpty()) {for (Map.Entry<String, String> entry : request.getLikeParams().entrySet()) {queryBuilder.must(QueryBuilders.matchQuery(entry.getKey(), entry.getValue()));}}if (request.getRangeParams() != null && !request.getRangeParams().isEmpty()) {for (EsRangeParams rangeParam : request.getRangeParams()) {RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery(rangeParam.getField());if (rangeParam.getGte() != null) {rangeQuery.gte(rangeParam.getGte());}if (rangeParam.getLte() != null) {rangeQuery.lte(rangeParam.getLte());}queryBuilder.filter(rangeQuery);}}sourceBuilder.query(queryBuilder);// 打印查询语句,可以放到kibana中执行并分析性能System.out.println(searchRequest.source().toString());// 执行搜索SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);EsSearchResult result = new EsSearchResult();result.setPageIndex(request.getPageIndex());result.setPageSize(request.getPageSize());result.setTotal(searchResponse.getHits().getTotalHits().value);result.setList(Arrays.stream(searchResponse.getHits().getHits()).map(SearchHit::getSourceAsMap).collect(Collectors.toList()));return new ResponseEntity<>(result, HttpStatus.OK);}

2.4 aggs 聚合统计

/*** 聚合统计** @param request* @return* @throws IOException*/@PostMapping("/aggs")public ResponseEntity<List<Object>> aggs(@RequestBody EsSearchRequest request) throws IOException {// 创建 SearchSourceBuilder 实例SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();// 设置 track_total_hitssearchSourceBuilder.trackTotalHits(true);// 设置分页参数searchSourceBuilder.from(0);searchSourceBuilder.size(1);// 构建 bool 查询BoolQueryBuilder boolQuery = QueryBuilders.boolQuery().filter(QueryBuilders.termQuery("provinceName", "浙江"));// 添加查询到 SearchSourceBuildersearchSourceBuilder.query(boolQuery);// 构建聚合TermsAggregationBuilder cityGroup = AggregationBuilders.terms("city_group").field("cityName").size(10).subAggregation(AggregationBuilders.terms("network_group").field("network").size(10)).subAggregation(AggregationBuilders.terms("phoneBrand_group").field("phoneBrandName").size(10)).subAggregation(AggregationBuilders.terms("sdkVersion_group").field("sdkVersion").size(10)).subAggregation(AggregationBuilders.terms("platform_group").field("platformName").size(10)).subAggregation(AggregationBuilders.terms("req_group").field("bizType").size(10)).subAggregation(AggregationBuilders.filter("ecpm_group", QueryBuilders.termQuery("bizType", 2)).subAggregation(AggregationBuilders.avg("avg_ecpm").field("ecpm")));// 添加聚合到 SearchSourceBuildersearchSourceBuilder.aggregation(cityGroup);// 创建 SearchRequest 并指定索引名称SearchRequest searchRequest = new SearchRequest("ssp_ad_union_log_202403");searchRequest.source(searchSourceBuilder);// 执行搜索请求SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);List<Object> result = new ArrayList<>(searchResponse.getAggregations().asList());for (Aggregation aggregation : searchResponse.getAggregations().asList()) {String json = aggregation.toString();
//            String json = OBJECT_MAPPER.writeValueAsString(aggregation);
//            Map<String, Object> map = new HashMap<>();
//            BeanUtils.copyProperties(aggregation, map);result.add(json);}return new ResponseEntity<>(result, HttpStatus.OK);}

2.5 新增单条数据

/*** 通过json新增** @return* @throws IOException*/@RequestMapping(path = "add")public ResponseEntity<IndexResponse> add() throws IOException {IndexRequest indexRequest = new IndexRequest("ssp_ad_union_log_202403");
//        indexRequest.id("1234567890");indexRequest.opType(DocWriteRequest.OpType.CREATE);indexRequest.source("{\n" +"          \"id\": 27731976,\n" +"          \"reqId\": \"d63e0377-639a-4ac4-96a7-677d507e627e\",\n" +"          \"device\": \"android\",\n" +"          \"platform\": 3,\n" +"          \"platformName\": \"快手\",\n" +"          \"clientType\": 1,\n" +"          \"myAppId\": \"300001\",\n" +"          \"deviceId\": \"d63e0377-639a-4ac4-96a7-677d507e627e\",\n" +"          \"adSiteGroupId\": 100000055,\n" +"          \"adSiteId\": \"6827003034\",\n" +"          \"packagePath\": \"com.jihuomiao.app\",\n" +"          \"ecpm\": 10700,\n" +"          \"location\": null,\n" +"          \"ip\": null,\n" +"          \"cityId\": 422800,\n" +"          \"areaId\": 422822,\n" +"          \"cityName\": \"恩施\",\n" +"          \"areaName\": \"建始\",\n" +"          \"provinceId\": 420000,\n" +"          \"provinceName\": \"湖北\",\n" +"          \"phoneBrand\": \"OPPO\",\n" +"          \"phoneBrandName\": \"oppo\",\n" +"          \"phoneModel\": null,\n" +"          \"idfa\": null,\n" +"          \"bizType\": 1,\n" +"          \"sdkVersion\": \"1.0.2\",\n" +"          \"network\": \"5g\",\n" +"          \"logTime\": \"2025-03-03 15:31:10\",\n" +"          \"createdAt\": \"2025-03-03 15:31:10\"\n" +"        }", XContentType.JSON);IndexResponse indexResponse = restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);return new ResponseEntity<>(indexResponse, HttpStatus.OK);}

2.6 bulk 批量新增数据

 @RequestMapping(path = "addBatch")public ResponseEntity<BulkResponse> addBatch() throws IOException {// 创建 BulkRequestBulkRequest bulkRequest = new BulkRequest();// 添加多个bulkRequest.add(new IndexRequest("ssp_ad_union_log_202403")
//                .id("12345678909").source("{ \"field1\": \"value1\", \"field2\": \"value2\" }", XContentType.JSON));bulkRequest.add(new IndexRequest("my_index")
//                .id("12345678987654").source("{ \"field1\": \"value2\", \"field2\": \"value2\" }", XContentType.JSON));// 执行批量创建操作BulkResponse bulkResponse = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);// 检查是否有错误if (bulkResponse.hasFailures()) {System.err.println("Bulk operation had failures: " + bulkResponse.buildFailureMessage());} else {System.out.println("All documents created successfully.");}return new ResponseEntity<>(bulkResponse, HttpStatus.OK);}

es 7 high Level client 主要的集成问题还是在与springboot的版本冲突,这点解决掉就可以了,官方文档里都能找到使用说明

http://www.dtcms.com/wzjs/556212.html

相关文章:

  • 找建筑图纸的网站浦东新区手机网站设计
  • 广州百度网站推广万能应用商店下载
  • 广州专业做网站的科技公司抚州教育网站建设
  • 棒的外贸网站建设网站建设如何上传图片
  • 三亚做网站那家效果好购物网站设计公司
  • 站长之家网站素材网站开发一级分销
  • 订阅号做微网站东莞网站制作建设
  • 长春做网站qianceyun浙江省门户网站
  • 两个男的怎么做网站重庆的主要的网站
  • 上传的网站怎么打开专做丰田车货款的网站
  • 山东网站推广公司wordpress templateredirect
  • 邯郸网站建设设计电子商务与网站建设实践论文
  • 网站阴影wordpress 文章列表顺序
  • 网站目录访问鄂州英文网站建设
  • 长沙优化网站关键词做网站的微信号
  • 专业做动漫的网站电商直播培训
  • php音乐外链网站源码推广链接怎么制作
  • 江苏和城乡建设部网站首页三室两厅装修
  • 哈尔滨做网站搭建的湛江网站建设方案服务
  • 网站打不开 ...阿里巴巴国际网站官网
  • 南通专业网站制作推广文案类型
  • 网站制作与建设西安网站开发xamokj
  • 出境旅游哪个网站做的好郑州seo优化外包
  • 视频下载网站软件做副屏做网站每天更新两篇文章
  • 网站开发人员的行业分析网站运营成本明细
  • 中国建设银行网站如何注册开发一个软件的流程是什么
  • 各大网站响应生态建设中国做视频网站有哪些
  • php制作网站开发江西赣鄂皖路桥投资有限公司网站建设
  • vps网站管理助手小程序商城如何运营
  • 企业网站模板下载需谨慎免费注册网站云空间