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

建设银行 网站查询密码建网站公司销售

建设银行 网站查询密码,建网站公司销售,网站建设公司优势,进入百度首页官网SpringBoot教程#xff08;二十八#xff09; | SpringBoot集成Elasticsearch#xff08;Java High Level Rest Client方式#xff09; 前言添加maven依赖yml配置ElasticsearchConfig 连接配置类EsUtil 工具类开始测试 前言 由ES官方提供#xff0c;代码语法和DSL语法相似… SpringBoot教程二十八 | SpringBoot集成ElasticsearchJava High Level Rest Client方式 前言添加maven依赖yml配置ElasticsearchConfig 连接配置类EsUtil 工具类开始测试 前言 由ES官方提供代码语法和DSL语法相似即Json格式的ES操作语法用法灵活可以自由使用SpringBoot 和 ES 版本的关联性较小 比较推荐使用这种方式 添加maven依赖 !--Elasticsearch的核心库-- dependencygroupIdorg.elasticsearch/groupIdartifactIdelasticsearch/artifactIdversion7.15.2/version /dependency !--Elasticsearch 低级别REST客户端-- dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-client/artifactIdversion7.15.2/version /dependency !--Elasticsearch 高级别REST客户端-- dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactIdversion7.15.2/version /dependency依赖解释 elasticsearch Elasticsearch的核心库只是在客户端应用中与Elasticsearch集群交互通常不需要直接包含这个依赖 elasticsearch-rest-client 低级别的REST客户端提供了基础的HTTP请求构建和执行能力但不包括高级抽象如索引、搜索等操作的封装 elasticsearch-rest-high-level-client 高级REST客户端它建立在elasticsearch-rest-client之上提供了更高级别的抽象如索引、搜索、更新等操作的封装。这使得与Elasticsearch的交互变得更加简单和直接。 yml配置 # es集群名称 elasticsearch.clusterNamesingle-node-cluster #es用户名 elasticsearch.userNameelastic #es密码 elasticsearch.passwordelastic # es host ip 地址(集群)本次使用的是单机模式 elasticsearch.hosts127.0.0.1:9200 # es 请求方式 elasticsearch.schemehttp # es 连接超时时间 elasticsearch.connectTimeOut1000 # es socket 连接超时时间 elasticsearch.socketTimeOut30000 # es 请求超时时间 elasticsearch.connectionRequestTimeOut500 # es 最大连接数 elasticsearch.maxConnectNum100 # es 每个路由的最大连接数 elasticsearch.maxConnectNumPerRoute100ElasticsearchConfig 连接配置类 import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.impl.client.BasicCredentialsProvider; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestClientBuilder; import org.elasticsearch.client.RestHighLevelClient; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;import java.util.ArrayList; import java.util.List;/*** restHighLevelClient 客户端配置类*/ Slf4j Data Configuration ConfigurationProperties(prefix elasticsearch) public class ElasticsearchConfig {// es host ip 地址集群private String hosts;// es 用户名private String userName;// es 密码private String password;// es 请求方式private String scheme;// es 集群名称private String clusterName;// es 连接超时时间private int connectTimeOut;// es socket 连接超时时间private int socketTimeOut;// es 请求超时时间private int connectionRequestTimeOut;// es 最大连接数private int maxConnectNum;// es 每个路由的最大连接数private int maxConnectNumPerRoute;/*** 如果Bean没有指定bean的名称那么这个bean的名称就是方法名*/Bean(name restHighLevelClient)public RestHighLevelClient restHighLevelClient() {RestHighLevelClient restHighLevelClient null;try {// 集群拆分地址ListHttpHost hostLists new ArrayList();String[] hostList hosts.split(,);for (String addr : hostList) {String host addr.split(:)[0];String port addr.split(:)[1];hostLists.add(new HttpHost(host, Integer.parseInt(port), scheme));}// 转换成 HttpHost 数组HttpHost[] httpHost hostLists.toArray(new HttpHost[]{});// 构建连接对象RestClientBuilder builder RestClient.builder(httpHost);// 设置用户名、密码CredentialsProvider credentialsProvider new BasicCredentialsProvider();credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));// 连接延时配置builder.setRequestConfigCallback(requestConfigBuilder - {requestConfigBuilder.setConnectTimeout(connectTimeOut);requestConfigBuilder.setSocketTimeout(socketTimeOut);requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeOut);return requestConfigBuilder;});// 连接数配置builder.setHttpClientConfigCallback(httpClientBuilder - {httpClientBuilder.setMaxConnTotal(maxConnectNum);httpClientBuilder.setMaxConnPerRoute(maxConnectNumPerRoute);httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);return httpClientBuilder;});restHighLevelClient new RestHighLevelClient(builder);} catch (NumberFormatException e) {log.error(ES 连接池初始化异常);}return restHighLevelClient;} } EsUtil 工具类 工具类中讲到的 index 其实就是 表名称 package com.example.springbootfull.elasticsearchclient.util;import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.support.master.AcknowledgedResponse; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.action.update.UpdateResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.CreateIndexResponse; import org.elasticsearch.client.indices.GetIndexRequest; import org.elasticsearch.common.Strings; import org.elasticsearch.common.text.Text; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.core.TimeValue; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.fetch.subphase.FetchSourceContext; import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; import org.elasticsearch.search.fetch.subphase.highlight.HighlightField; import org.elasticsearch.search.sort.SortOrder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.UUID;/*** es 的工具类** author*/ Slf4j Component public class EsUtil {Autowiredprivate RestHighLevelClient restHighLevelClient;/*** 关键字*/public static final String KEYWORD .keyword;/*** 创建索引** param index 索引* return*/public boolean createIndex(String index) throws IOException {if (isIndexExist(index)) {log.error(Index is exits!);return false;}//1.创建索引请求CreateIndexRequest request new CreateIndexRequest(index);//2.执行客户端请求CreateIndexResponse response restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);log.info(创建索引{}成功, index);return response.isAcknowledged();}/*** 删除索引** param index* return*/public boolean deleteIndex(String index) throws IOException {if (!isIndexExist(index)) {log.error(Index is not exits!);return false;}//删除索引请求DeleteIndexRequest request new DeleteIndexRequest(index);//执行客户端请求AcknowledgedResponse delete restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);log.info(删除索引{}成功, index);return delete.isAcknowledged();}/*** 判断索引是否存在** param index* return*/public boolean isIndexExist(String index) throws IOException {GetIndexRequest request new GetIndexRequest(index);boolean exists restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);return exists;}/*** 数据添加正定ID** param jsonObject 要增加的数据* param index 索引类似数据库* param id 数据ID, 为null时es随机生成* return*/public String addData(JSONObject jsonObject, String index, String id) throws IOException {//创建请求IndexRequest request new IndexRequest(index);//规则 put /test_index/_doc/1request.id(id);request.timeout(TimeValue.timeValueSeconds(1));//将数据放入请求 jsonIndexRequest source request.source(jsonObject, XContentType.JSON);//客户端发送请求IndexResponse response restHighLevelClient.index(request, RequestOptions.DEFAULT);log.info(添加数据成功 索引为: {}, response 状态: {}, id为: {}, index, response.status().getStatus(), response.getId());return response.getId();}/*** 数据添加 随机id** param jsonObject 要增加的数据* param index 索引类似数据库* return*/public String addData(JSONObject jsonObject, String index) throws IOException {return addData(jsonObject, index, UUID.randomUUID().toString().replaceAll(-, ).toUpperCase());}/*** 通过ID删除数据** param index 索引类似数据库* param id 数据ID*/public void deleteDataById(String index, String id) throws IOException {//删除请求DeleteRequest request new DeleteRequest(index, id);//执行客户端请求DeleteResponse delete restHighLevelClient.delete(request, RequestOptions.DEFAULT);log.info(索引为: {}, id为: {}删除数据成功, index, id);}/*** 通过ID 更新数据** param object 要增加的数据* param index 索引类似数据库* param id 数据ID* return*/public void updateDataById(Object object, String index, String id) throws IOException {//更新请求UpdateRequest update new UpdateRequest(index, id);//保证数据实时更新//update.setRefreshPolicy(wait_for);update.timeout(1s);update.doc(JSON.toJSONString(object), XContentType.JSON);//执行更新请求UpdateResponse update1 restHighLevelClient.update(update, RequestOptions.DEFAULT);log.info(索引为: {}, id为: {}, 更新数据成功, index, id);}/*** 通过ID 更新数据,保证实时性** param object 要增加的数据* param index 索引类似数据库* param id 数据ID* return*/public void updateDataByIdNoRealTime(Object object, String index, String id) throws IOException {//更新请求UpdateRequest update new UpdateRequest(index, id);//保证数据实时更新update.setRefreshPolicy(wait_for);update.timeout(1s);update.doc(JSON.toJSONString(object), XContentType.JSON);//执行更新请求UpdateResponse update1 restHighLevelClient.update(update, RequestOptions.DEFAULT);log.info(索引为: {}, id为: {}, 更新数据成功, index, id);}/*** 通过ID获取数据** param index 索引类似数据库* param id 数据ID* param fields 需要显示的字段逗号分隔缺省为全部字段* return*/public MapString, Object searchDataById(String index, String id, String fields) throws IOException {GetRequest request new GetRequest(index, id);if (StringUtils.isNotEmpty(fields)) {//只查询特定字段。如果需要查询所有字段则不设置该项。request.fetchSourceContext(new FetchSourceContext(true, fields.split(,), Strings.EMPTY_ARRAY));}GetResponse response restHighLevelClient.get(request, RequestOptions.DEFAULT);MapString, Object map response.getSource();//为返回的数据添加idmap.put(id, response.getId());return map;}/*** 通过ID判断文档是否存在** param index 索引类似数据库* param id 数据ID* return*/public boolean existsById(String index, String id) throws IOException {GetRequest request new GetRequest(index, id);//不获取返回的_source的上下文request.fetchSourceContext(new FetchSourceContext(false));request.storedFields(_none_);return restHighLevelClient.exists(request, RequestOptions.DEFAULT);}/*** 获取低水平客户端** return*/public RestClient getLowLevelClient() {return restHighLevelClient.getLowLevelClient();}/*** 高亮结果集 特殊处理* map转对象 JSONObject.parseObject(JSONObject.toJSONString(map), Content.class)** param searchResponse* param highlightField*/public ListMapString, Object setSearchResponse(SearchResponse searchResponse, String highlightField) {//解析结果ArrayListMapString, Object list new ArrayList();for (SearchHit hit : searchResponse.getHits().getHits()) {MapString, HighlightField high hit.getHighlightFields();HighlightField title high.get(highlightField);hit.getSourceAsMap().put(id, hit.getId());MapString, Object sourceAsMap hit.getSourceAsMap();//原来的结果//解析高亮字段,将原来的字段换为高亮字段if (title ! null) {Text[] texts title.fragments();String nTitle ;for (Text text : texts) {nTitle text;}//替换sourceAsMap.put(highlightField, nTitle);}list.add(sourceAsMap);}return list;}/*** 查询并分页** param index 索引名称* param query 查询条件* param size 文档大小限制* param from 从第几页开始* param fields 需要显示的字段逗号分隔缺省为全部字段* param sortField 排序字段* param highlightField 高亮字段* return*/public ListMapString, Object searchListData(String index,SearchSourceBuilder query,Integer size,Integer from,String fields,String sortField,String highlightField) throws IOException {SearchRequest request new SearchRequest(index);SearchSourceBuilder builder query;if (StringUtils.isNotEmpty(fields)) {//只查询特定字段。如果需要查询所有字段则不设置该项。builder.fetchSource(new FetchSourceContext(true, fields.split(,), Strings.EMPTY_ARRAY));}from from 0 ? 0 : from * size;//设置确定结果要从哪个索引开始搜索的from选项默认为0builder.from(from);builder.size(size);if (StringUtils.isNotEmpty(sortField)) {//排序字段注意如果proposal_no是text类型会默认带有keyword性质需要拼接.keywordbuilder.sort(sortField .keyword, SortOrder.ASC);}//高亮HighlightBuilder highlight new HighlightBuilder();highlight.field(highlightField);//关闭多个高亮highlight.requireFieldMatch(false);highlight.preTags(span stylecolor:red);highlight.postTags(/span);builder.highlighter(highlight);//不返回源数据。只有条数之类的数据。//builder.fetchSource(false);request.source(builder);SearchResponse response restHighLevelClient.search(request, RequestOptions.DEFAULT);log.error( response.getHits().getTotalHits());if (response.status().getStatus() 200) {// 解析对象return setSearchResponse(response, highlightField);}return null;} } 开始测试 实体类 package com.example.springbootfull.elasticsearchclient.bean;import java.math.BigDecimal; import java.util.Date;public class EmployeeInfo2 {private Long id;/*** 工号*/private String jobNo;/*** 姓名*/private String name;/*** 英文名*/private String englishName;/*** 工作岗位*/private String job;/*** 性别*/private Integer sex;/*** 年龄*/private Integer age;/*** 薪资*/private BigDecimal salary;/*** 入职时间*/private Date jobDay;/*** 备注*/private String remark;public Long getId() {return id;}public void setId(Long id) {this.id id;}public String getJobNo() {return jobNo;}public void setJobNo(String jobNo) {this.jobNo jobNo;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getEnglishName() {return englishName;}public void setEnglishName(String englishName) {this.englishName englishName;}public String getJob() {return job;}public void setJob(String job) {this.job job;}public Integer getSex() {return sex;}public void setSex(Integer sex) {this.sex sex;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public BigDecimal getSalary() {return salary;}public void setSalary(BigDecimal salary) {this.salary salary;}public Date getJobDay() {return jobDay;}public void setJobDay(Date jobDay) {this.jobDay jobDay;}public String getRemark() {return remark;}public void setRemark(String remark) {this.remark remark;}public EmployeeInfo2() {}public EmployeeInfo2(Long id, String jobNo, String name, String englishName, String job, Integer sex, Integer age, BigDecimal salary, Date jobDay, String remark) {this.id id;this.jobNo jobNo;this.name name;this.englishName englishName;this.job job;this.sex sex;this.age age;this.salary salary;this.jobDay jobDay;this.remark remark;}Overridepublic String toString() {return EmployeeInfo{ id id , jobNo jobNo \ , name name \ , englishName englishName \ , job job \ , sex sex , age age , salary salary , jobDay jobDay , remark remark \ };} } Controller类 package com.example.springbootfull.elasticsearchclient.controller;import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.PropertyNamingStrategy; import com.alibaba.fastjson.serializer.SerializeConfig; import com.example.springbootfull.elasticsearchclient.bean.EmployeeInfo2; import com.example.springbootfull.elasticsearchclient.util.EsUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.math.BigDecimal; import java.text.SimpleDateFormat;RestController RequestMapping(/employeeInfo) public class EmployeeElasticController {Autowiredprivate EsUtil esUtil;//esUtilRequestMapping(/createIndex)public String createIndex() throws Exception {esUtil.createIndex(employee_info_2);return success;}RequestMapping(/deleteIndex)public String deleteIndex() throws Exception {esUtil.deleteIndex(employee_info_2);return success;}RequestMapping(/save)public String save() throws Exception {SimpleDateFormat simpleDateFormat new SimpleDateFormat(yyyy-MM-dd);EmployeeInfo2 employeeInfo new EmployeeInfo2(6001L, 2001, 我去, zhangsan, Java, 1, 19, new BigDecimal(12500.01), simpleDateFormat.parse(2019-09-10), 备注);//可以帮我把驼峰命名的属性转成下划线格式的如果你需要的话SerializeConfig config new SerializeConfig();config.propertyNamingStrategy PropertyNamingStrategy.SnakeCase;String json1 JSON.toJSONString(employeeInfo, config);esUtil.addData(JSONObject.parseObject(json1), employee_info_2, null);//不然直接//esUtil.addData((JSONObject) JSONObject.toJSON(employeeInfo), employee_info_2, null);return success;}} 执行save 方法后可以看到 es 可视化页面上面 出现了 一条数据 其中的id由于我给了nulles就随机帮我生成了 参考文章 【1】SpringBoot整合ElasticSearch的两种方式 【2】elasticsearch7.9 java工具类restHighLevelClient精华整理JavaRESTClient 【3】三种方式实现Java对象转json下划线格式
http://www.w-s-a.com/news/323047/

相关文章:

  • ppt素材免费网站网站正能量晚上免费软件
  • 个人淘宝客网站如何备案搭建一个平台要多少钱
  • nginx 网站建设淘客网站怎么做首页
  • 网站制作的基本步骤是手机网站建设 新闻
  • 水墨 网站源码工装
  • 任丘网站建设服务网站 建设原则
  • 长沙做一个网站要多少钱网站底部备案代码
  • wordpress构建自定义设置页面seo培训学什么
  • 延安有哪些做网站的公司如何建设网站?
  • 网站建设者属于广告经营者吗网站管理程序
  • 网站内容优化方法深圳市宝安区怎么样
  • 视频网站开发视频公司网站制作多少钱
  • 单页简洁手机网站模板购物软件
  • 素材网站官网低价网站建设费用预算
  • 苏州网站设计kgwl个人网站有什么外国广告做
  • 浙江省网站建设报价简单网站开发工具
  • 物流网站的建设wordpress电视直播插件下载
  • 简述网站开发流程青岛做网站建设价格低
  • 网站开发的业务需求分析杭州推广公司
  • 网站建设技术实现难点app开发需要哪些软件
  • 响水建设局网站做网站需要会哪些知识
  • 企业制作企业网站个人网站可以做百度竞价
  • 做网站找投资人wordpress 5 主题教程
  • 做国外网站汇款用途是什么wordpress图片主题晨曦
  • 网站设计跟网站开发区别为什么网站需要维护
  • m 的手机网站怎么做网络推广方式和方法
  • wordpress图片自动轮播插件seo门户网站建设
  • 制作商业网站传奇网页游戏排名
  • 网站免费推广方案长沙房地产网站设计
  • 济南网站建设cnwenhui中交路桥建设网站