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

帝国网站管理系统教程小规模企业做网站

帝国网站管理系统教程,小规模企业做网站,可信网站 如何验证,鞍山网站建设工作室ElasticSearch 1、ElasticSearch学习随笔之基础介绍 2、ElasticSearch学习随笔之简单操作 3、ElasticSearch学习随笔之java api 操作 4、ElasticSearch学习随笔之SpringBoot Starter 操作 5、ElasticSearch学习随笔之嵌套操作 6、ElasticSearch学习随笔之分词算法 7、ElasticS…ElasticSearch 1、ElasticSearch学习随笔之基础介绍 2、ElasticSearch学习随笔之简单操作 3、ElasticSearch学习随笔之java api 操作 4、ElasticSearch学习随笔之SpringBoot Starter 操作 5、ElasticSearch学习随笔之嵌套操作 6、ElasticSearch学习随笔之分词算法 7、ElasticSearch学习随笔之高级检索 8、ELK技术栈介绍 9、Logstash部署与使用 10、ElasticSearch 7.x 版本使用 BulkProcessor 实现批量添加数据 11、ElasticSearch 8.x 弃用了 High Level REST Client移除了 Java Transport Client推荐使用 Elasticsearch Java API 12、ElasticSearch 8.x 使用 snapshot快照进行数据迁移 13、ElasticSearch 8.x 版本如何使用 SearchRequestBuilder 检索 ElasticSearch创始人 Shay Banon谢巴农 本文主要讲解ElasticSearch 高级搜索实战来满足复杂的业务场景还是用 Kibana 来操作。 文章目录 ElasticSearch前言一pom 依赖二初始化客户端2.1 初始化 HighLevelClient 客户端2.2 初始化 ElasticsearchClient 客户端 三执行查询 前言 在之前的项目中都是用 SearchRequestBuilder 来构件 ElasticSearch 检索请求的然后使用了新的 High Level Client 之后新的客户端构建查询是用了 SearchSourceBuilder 来构建检索请求的若使使用新的检索方式请移步《Elasticsearch Java API 如何使用》查看。 那用 SearchSourceBuilder 进行构建查询时需要使用 RestHighLevelClient 客戶端来发送请求的简单代码如下 RestHighLevelClient client createClient(); SearchRequest searchRequest new SearchRequest(); SearchSourceBuilder sourceBuilder new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.matchAllQuery()); searchRequest.source(sourceBuilder); sourceBuilder.from(0).size(10); SearchResponse searchResponse client.search(searchRequest, RequestOptions.DEFAULT);以上这种写法就是 High Level Client 常见的写法。 那如果特殊情况下比如需要和老项目融合的时候可能需要使用到 SearchRequestBuilder 来检索该如何做呢 就是用 ElasticsearchClient 来包装 RestHighLevelClient 来执行查询真正的检索使用 RestHighLevelClient 来执行的而 ElasticsearchClient 则是构建为了融合并初始化 SearchRequestBuilder 而创建的。 一pom 依赖 dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactIdversion7.17.16/version /dependency二初始化客户端 2.1 初始化 HighLevelClient 客户端 这里首先要初始化 HighLevelClient 客户端因为真正的检索需要使用此客户端来执行的。 /*** 初始化客户端* return RestHighLevelClient*/ private static RestHighLevelClient getClient(){final CredentialsProvider credentialsProvider new BasicCredentialsProvider();credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(Your username, Your password));RestClientBuilder restClientBuilder RestClient.builder(new HttpHost(192.168.*.*, 9200)).setHttpClientConfigCallback(httpAsyncClientBuilder - httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider));RestHighLevelClient highLevelClient new RestHighLevelClient(restClientBuilder);return highLevelClient; }2.2 初始化 ElasticsearchClient 客户端 这里我们来初始化 ElasticsearchClient 客户端为什么要初始化此客户端呢ElasticsearchClient 就像是一个代理客户端调用了 HighLevelClient 来执行查询。 这里我们把 RestHighLevelClient 作为参数传入用于封装。 private static ElasticsearchClient getEsClient(RestHighLevelClient highLevelClient){return new ElasticsearchClient() {Overridepublic Request extends ActionRequest, Response extends ActionResponse ActionFutureResponse execute(ActionTypeResponse action, Request request) {if (action.equals(SearchAction.INSTANCE) request instanceof SearchRequest) {return new ActionFutureResponse() {Overridepublic Response actionGet() {try {// 执行检索return (Response) highLevelClient.search((SearchRequest) request, RequestOptions.DEFAULT);} catch (IOException e) {e.printStackTrace();}return null;}Overridepublic Response actionGet(String timeout) {try {// 将字符串形式的时间转换为 TimeValueTimeValue timeValue TimeValue.parseTimeValue(timeout, timeout);SearchSourceBuilder sourceBuilder new SearchSourceBuilder();sourceBuilder.timeout(timeValue);SearchRequest searchRequest new SearchRequest();searchRequest.source(sourceBuilder);// 执行检索return (Response) highLevelClient.search((SearchRequest) request, RequestOptions.DEFAULT);} catch (IOException e) {throw new RuntimeException(e);}}Overridepublic Response actionGet(long timeoutMillis) {try {SearchSourceBuilder sourceBuilder new SearchSourceBuilder();sourceBuilder.timeout(TimeValue.timeValueMillis(timeoutMillis));SearchRequest searchRequest new SearchRequest();searchRequest.source(sourceBuilder);// 执行检索return (Response) highLevelClient.search((SearchRequest) request, RequestOptions.DEFAULT);} catch (IOException e) {throw new RuntimeException(e);}}Overridepublic Response actionGet(long timeout, TimeUnit unit) {return null;}Overridepublic Response actionGet(TimeValue timeout) {return null;}Overridepublic boolean cancel(boolean mayInterruptIfRunning) {return false;}Overridepublic boolean isCancelled() {return false;}Overridepublic boolean isDone() {return false;}Overridepublic Response get() throws InterruptedException, ExecutionException {return null;}Overridepublic Response get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {return null;}};} else {throw new UnsupportedOperationException(Unsupported action: action.name());}}Overridepublic Request extends ActionRequest, Response extends ActionResponse void execute(ActionTypeResponse action, Request request, ActionListenerResponse listener) {if (action.equals(SearchAction.INSTANCE) request instanceof SearchRequest) {highLevelClient.searchAsync((SearchRequest) request, RequestOptions.DEFAULT, (ActionListenerSearchResponse) listener);} else {throw new UnsupportedOperationException(Unsupported action: action.name());}}Overridepublic ThreadPool threadPool() {return null;}}; }以上初始化的 ElasticsearchClient 客户端中只实现了常用的部分 actionGet 方法其他方法在使用时再实现实现方法基本上都差不多。 三执行查询 ElasticsearchClient 则是可以通过 SearchRequestBuilder 来调用执行检索在 new SearchRequestBuilder() 时ElasticsearchClient 作为参数传递则直接可以通过 execute().actionGet() 来执行检索并得到结果了。 public static void main(String[] args) {RestHighLevelClient highLevelClient getClient();ElasticsearchClient esClient getEsClient(highLevelClient);SearchRequestBuilder requestBuilder new SearchRequestBuilder(esClient, SearchAction.INSTANCE);requestBuilder.setIndices(product_info);requestBuilder.setFrom(0);requestBuilder.setSize(10);requestBuilder.setQuery(QueryBuilders.matchAllQuery());requestBuilder.addAggregation(AggregationBuilders.terms(productName).field(productName.keyword));// 执行检索并获取检索结果String s requestBuilder.execute().actionGet().toString();System.out.println(检索结果 s);JSONObject jsonObject JSONObject.parseObject(s);// 获取到 agg 统计结果JSONObject aggregations jsonObject.getJSONObject(aggregations);System.out.println(aggregations);try {highLevelClient.close();} catch (IOException e) {e.printStackTrace();} }执行结果 检索结果{took:0,timed_out:false,_shards:{total:1,successful:1,skipped:0,failed:0},hits:{total:{value:2,relation:eq},max_score:1.0,hits:[{_index:product_info,_id:1001,_score:1.0,_source:{productName:小米汽车,productDescription:相当于保时捷特斯拉的小米超跑,color:海蓝色,price:19}},{_index:product_info,_id:1002,_score:1.0,_source:{productName:小米手机,productDescription:小米智能手机价格实惠便宜,color:黑色,price:2999}}]},aggregations:{sterms#productName:{doc_count_error_upper_bound:0,sum_other_doc_count:0,buckets:[{key:小米手机,doc_count:1},{key:小米汽车,doc_count:1}]}}} 统计结果{sterms#productName:{doc_count_error_upper_bound:0,sum_other_doc_count:0,buckets:[{doc_count:1,key:小米手机},{doc_count:1,key:小米汽车}]}}
http://www.zqtcl.cn/news/418346/

相关文章:

  • 嵌入式开发软件有哪些上海谷歌seo
  • 国际学校网站如何建设wordpress登入可见
  • 如何做好网站内链网站开发平台开发
  • 安徽省建设厅网站怎么进不去2022年国内重要新闻
  • 河北建设机械协会网站wordpress怎么做两个语言网站
  • 美容网站模版在线动画手机网站模板
  • jsp做的婚恋网站在谷歌上做英文网站
  • 北京教育学会网站建设昆明seo公司网站
  • 免费域名试用注册网站google搜索关键词热度
  • 温州建设小学网站高中资料网站免费
  • 室内设计网站官网大全电子商务网站后台核心管理
  • 网站建设报价图片欣赏福州网站建设报价
  • 网站推广基本方法是文创产品设计稿
  • 厦门网站制作公司推荐作文网投稿网站
  • 网站开发过什么软件杭州cms建站模板下载
  • 做中东服装有什么网站谁能给我个网址
  • 深圳网站建设公司服务平台河北省建设银行网站首页
  • 新密网站网页版微信小程序在哪
  • 长春建一个网站大概要多少钱微信公众号开店流程
  • 网站运营实例django 微信小程序开发教程
  • wordpress 搭网站郑州网站建设华久
  • 网站建设图片尺寸专门做音乐的网站
  • 株洲做网站外贸推广产品
  • 枫叶的网站建设博客企业网站样板制作
  • 织梦网站文章相互调用百度下载老版本
  • pc网站的优势网站建设款属不属于无形资产
  • 网站建设数据安全分析网络全案推广
  • 网站建设哪家好就推 鹏博资讯手机自助建网站
  • 沈阳网站制作招聘网长治网站建设电话
  • 承德网站设计公司余姚做百度网站