Elasticsearch入门(RestHighLevelClient)-客户端封装-API查询

Elasticsearch封装RestHighLevelClient的使用工具包 pretty-elasticsearch-core pretty-elasticsearch-core是基于elasticsearch 6.5.3版本的RestHighLevelClient使用工具包,可整合到spring 4.0以上的版本中。 最大的优点是快速整合,如果你只用连接单个集群,那么你只需要做三个动作: 1)加入配置文件 2)给索引对应的实体加上两个注解 ... 阅读详情

背景

- 大数据架构业务场景中需要实时数据落入ES,基本上是业务数据,目的是为了封装后作为规则引擎的变量提供,是变量系统的一部分;
- 架构数据流来源于Maxwell,Spark Streaming做数据流处理,落库使用RestHighLevelClient的同步提交Bulk写入;增删改此文档不涉及,主要就是客户端以及查询的封装,为后续变量系统的应用部分;

客户端

streaming直接使用

def createESClientNew(): RestHighLevelClient = {
  new RestHighLevelClient(
    RestClient.builder(
      new HttpHost("host", 9200, "http"),
      new HttpHost("host", 9200, "http"),
      new HttpHost("host", 9200, "http")
    )
  )
}

集群节点之间使用,序列化

public class BaseEsClientSerializable implements Serializable {
    public RestHighLevelClient getClient() {
        return null;
    }
}

public class EsClientSerializable extends BaseEsClientSerializable {
    public static RestHighLevelClient client = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("host", 9200, "http")));

    @Override
    public RestHighLevelClient getClient() {
        return client;
    }
}

配置连接池查询

public class EsClientPoolFactory implements PooledObjectFactory<RestHighLevelClient> {

    /**
     * 生产对象
     * @return
     * @throws Exception
     */
    @Override
    public PooledObject<RestHighLevelClient> makeObject() throws Exception {
        RestHighLevelClient client = null;
        try {
            client = new RestHighLevelClient(RestClient.builder(
                    new HttpHost("host", 9200, "http")));

        } catch (Exception e) {
            e.printStackTrace();
        }
        return new DefaultPooledObject<>(client);

    }

    /**
     * 销毁对象
     * @param pooledObject
     * @throws Exception
     */
    @Override
    public void destroyObject(PooledObject<RestHighLevelClient> pooledObject) throws Exception {
        RestHighLevelClient highLevelClient = pooledObject.getObject();
        highLevelClient.close();
    }

    @Override
    public boolean validateObject(PooledObject<RestHighLevelClient> pooledObject) {
        return true;
    }

    @Override
    public void activateObject(PooledObject<RestHighLevelClient> pooledObject) throws Exception {
        System.out.println("activateObject");

    }

    @Override
    public void passivateObject(PooledObject<RestHighLevelClient> pooledObject) throws Exception {
        System.out.println("passivateObject");

    }
}
public class ElasticSearchPoolUtil {

    // 对象池配置类,不写也可以,采用默认配置
    private static GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
    // 采用默认配置maxTotal是8,池中有8个client
    static {
        poolConfig.setMaxTotal(8);
    }
    // 要池化的对象的工厂类,这个是我们要实现的类
    private static EsClientPoolFactory esClientPoolFactory = new EsClientPoolFactory();
    // 利用对象工厂类和配置类生成对象池
    private static GenericObjectPool<RestHighLevelClient> clientPool = new GenericObjectPool<>(esClientPoolFactory,
            poolConfig);

    /**
     * 获得对象
     *
     * @return
     * @throws Exception
     */
    public static RestHighLevelClient getClient() throws Exception {
        // 从池中取一个对象
        RestHighLevelClient client = clientPool.borrowObject();
        return client;
    }

    /**
     * 归还对象
     *
     * @param client
     */
    public static void returnClient(RestHighLevelClient client) {
        // 使用完毕之后,归还对象
        clientPool.returnObject(client);
    }
}

查询

  • 没有封装的很完全,多个熟悉之后按照业务场景添加就好,目的就是后续查询不需要开发,直接配置条件即可;

多条件match,过滤查询

/**
 * 多条件match,过滤查询
 *
 * @param client 客户端
 * @param index 索引
 * @param matchs 条件组,json中kv
 * @return hits
 */
def searchHitsByMatchs(
                        client: RestHighLevelClient,
                        index: String,
                        matchs: JSONObject,
                        size: Int
                      ): SearchResponse = {
  val searchRequest = new SearchRequest(index)
  val searchSourceBuilder = new SearchSourceBuilder().size(size)
  val boolQueryBuilder = QueryBuilders.boolQuery()

  /**
   * 处理match,做匹配
   */
  matchs.keySet().toArray().foreach(jsonKey => {
    val matchQueryBuilder = QueryBuilders.matchQuery(jsonKey.toString, matchs.getString(jsonKey.toString))
    boolQueryBuilder.must().add(matchQueryBuilder)
  })

  /**
   * 添加bool查询构建
   */
  searchSourceBuilder.query(boolQueryBuilder)
  searchRequest.source(searchSourceBuilder)
  client.search(
    searchRequest,
    RequestOptions.DEFAULT
  )
}

多条件term,过滤查询

/**
 * 多条件term,过滤查询
 *
 * @param client 客户端
 * @param index 索引
 * @param terms 条件组,json中kv
 * @return hits
 */
def searchHitsByTerms(client: RestHighLevelClient,
                      index: String,
                      terms: JSONObject,
                      size: Int
                     ): SearchResponse = {
  val searchRequest = new SearchRequest(index)
  val searchSourceBuilder = new SearchSourceBuilder().size(size)
  val boolQueryBuilder = QueryBuilders.boolQuery()

  /**
   * 处理term
   */
  terms.keySet().toArray().foreach(jsonKey => {
    val termQueryBuilder = QueryBuilders.termQuery(jsonKey.toString, terms.getString(jsonKey.toString))
    boolQueryBuilder.must().add(termQueryBuilder)
  })
  searchSourceBuilder.query(boolQueryBuilder)
  searchRequest.source(searchSourceBuilder)

  client.search(
    searchRequest,
    RequestOptions.DEFAULT
  )
}

多条件match查询返回count

/**
 * 多条件match查询返回count
 *
 * @param client
 * @param index
 * @param matchs
 * @return
 */
def searchCountByMatchs(
                         client: RestHighLevelClient,
                         index: String,
                         matchs: JSONObject
                       ): CountResponse = {
  val countRequest: CountRequest = new CountRequest(index)
  val searchSourceBuilder = new SearchSourceBuilder()
  val boolQueryBuilder = QueryBuilders.boolQuery()

  /**
   * 处理match,做匹配
   */
  matchs.keySet().toArray().foreach(jsonKey => {
    val matchQueryBuilder = QueryBuilders.matchQuery(jsonKey.toString, matchs.getString(jsonKey.toString))
    boolQueryBuilder.must().add(matchQueryBuilder)
  })

  /**
   * 添加bool查询构建
   */
  searchSourceBuilder.query(boolQueryBuilder)
  countRequest.source(searchSourceBuilder)
  client.count(
    countRequest,
    RequestOptions.DEFAULT
  )
}

多条件match聚合查询

/**
 * 多条件match聚合查询<avg , sum , max  , min>
 *
 * @param client 客户端
 * @param index 索引
 * @param matchs 条件组,json中kv
 * @param returnFieldName 返回聚合的名字
 * @param sumField 聚合的字段
 * @param aggregationType <SUM , AVG , MAX , MIN  , 默认值为count> 聚合类型
 * @return
 */
def searchSumByMatchs(
                       client: RestHighLevelClient,
                       index: String,
                       matchs: JSONObject,
                       returnFieldName: String,
                       sumField: String,
                       aggregationType: String
                     ): SearchResponse = {
  val searchRequest = new SearchRequest(index)
  val searchSourceBuilder = new SearchSourceBuilder()
  val boolQueryBuilder = QueryBuilders.boolQuery()

  /**
   * 处理match,做匹配
   */
  matchs.keySet().toArray().foreach(jsonKey => {
    val matchQueryBuilder = QueryBuilders.matchQuery(jsonKey.toString, matchs.getString(jsonKey.toString))
    boolQueryBuilder.must().add(matchQueryBuilder)
  })

  /**
   * 添加bool查询构建
   */
  searchSourceBuilder.query(boolQueryBuilder)


  /**
   * 聚合查询,根据不同入参算不同结果
   *
   * feild : Sets the field to use for this aggregation. 设置用于此聚合的字段。
   * sum : Create a new {@link Sum} aggregation with the given name.用给定的名称创建一个新的{@link Sum}聚合。
   */

  val aggregationBuilder: ValuesSourceAggregationBuilder.LeafOnly[_ >: ValuesSource.Numeric <: ValuesSource, _ >:
    SumAggregationBuilder with MaxAggregationBuilder with MinAggregationBuilder with AvgAggregationBuilder with ValueCountAggregationBuilder <:
    ValuesSourceAggregationBuilder.LeafOnly[_ >:
      ValuesSource.Numeric <: ValuesSource, _ >: SumAggregationBuilder with MaxAggregationBuilder with MinAggregationBuilder with AvgAggregationBuilder with ValueCountAggregationBuilder]] =
    aggregationType match {
      case "SUM" =>
        AggregationBuilders.sum(returnFieldName).field(sumField)
      case "MAX" =>
        AggregationBuilders.max(returnFieldName).field(sumField)
      case "MIN" =>
        AggregationBuilders.min(returnFieldName).field(sumField)
      case "AVG" =>
        AggregationBuilders.avg(returnFieldName).field(sumField)
      case _ =>
        AggregationBuilders.count(returnFieldName).field(sumField)
    }

  /**
   * 添加聚合查询
   */
  searchSourceBuilder.aggregation(aggregationBuilder)

  /**
   * 将所有条件添加到请求
   */
  searchRequest.source(searchSourceBuilder)
  client.search(
    searchRequest,
    RequestOptions.DEFAULT
  )
}

数据解析

解析searchResponse为SearchHit 集合

/**
 * 解析 searchResponse 为 SearchHit 集合
 * @param searchResponse
 * @return
 */
def analysisSearchResponseToHits(
                                  searchResponse : SearchResponse
                                ): Array[SearchHit] ={
  searchResponse.getHits.getHits
}

解析CountResponse为long值

/**
 * 解析 CountResponse 为 long 值
 * @param countResponse
 * @return
 */
def analysisCountResponseToLong(countResponse : CountResponse): Long ={
  countResponse.getCount
}

解析searchResponse为各种聚合Double值

/**
 * 解析 searchResponse 为 各种聚合Double 值
 * @param searchResponse
 * @param returnFieldName
 * @param aggregationType
 * @return
 */
def analysisSearchResponseToAggregationFloat(
                                  searchResponse : SearchResponse ,
                                  returnFieldName: String ,
                                  aggregationType: String
                                ): Double ={
  val aggregations = searchResponse.getAggregations
  /**
   * 得到单个Aggregation并进行实现
   */
  val aggregation: Aggregation = aggregations.get(returnFieldName).asInstanceOf[Aggregation]
  /**
   * 根据Aggregation的接口转实现类
   * An aggregation. Extends {@link ToXContent} as it makes it easier to print out its content.
   */
  aggregationType match {
    case "SUM" =>
      aggregation.asInstanceOf[ParsedSum].value()
    case "MAX" =>
      aggregation.asInstanceOf[ParsedMax].value()
    case "MIN" =>
      aggregation.asInstanceOf[ParsedMin].value()
    case "AVG" =>
      aggregation.asInstanceOf[ParsedAvg].value()
    case _ =>
      aggregation.asInstanceOf[ParsedValueCount].value()
  }
}

调用使用

/**
 * 连接
 */
val client = EsClientSerializable.client

/**
 * 测试searchCountByMatchs
 */
val matchs = new JSONObject()
matchs.put("cert_no.keyword", "xxx")
val countResponse = searchCountByMatchs(
  client,
  "vs_fms_repay_plan_wide_table_new",
  matchs
)
println(SingleResponseAnalysisUtils.analysisCountResponseToLong(countResponse))

/**
 * 测试 searchSumByMatchs
 */
val searchResponse = searchSumByMatchs(
  client,
  "vs_fms_repay_plan_wide_table_new",
  matchs,
  "result_principal",
  "principal",
  "MAX"
)
println(SingleResponseAnalysisUtils.analysisSearchResponseToAggregationFloat(
  searchResponse,
  "result_principal",
  "MAX"
))

说明

  • 后续会将ES实际项目中的部分逐渐更新出来;
  • 包含在大数据场景下:实时、离线不同项目中的运用;
Springboot 整合 Elasticsearch(三):使用RestHighLevelClient操作ES ① Springboot 整合 Elasticsearch(三):使用RestHighLevelClient操作ES 阅读详情

相关推荐

Elasticsearch RestHighLevelClient 已标记为被弃用 它的替代方案 Elasticsearch Java API Client 的基础教程及迁移方案

在Elasticsearch7.15版本之后,Elasticsearch官方宣布弃用了它的高级客户端RestHighLevelClient。同时推出了全新的Java API客户端Elasticsearch Java API Client。 Elasticsearch Java API Client 支持除 Vector tile search API 和 Find structure API 之外的所有 Elasticsearch API。且支持所有API数据类型,并且不再有原始JsonValue属性。它

无枫的博客,分享Java及Vue方向的技术文章 4万+

Elasticsearch RestHighLevelClient API 使用总结

Elasticsearch RestHighLevelClient API 使用总结

java界的小学生 2439

es客户端入门要点:掌握RestHighLevelClient用法

深入解析es客户端的使用要点,重点介绍RestHighLevelClient的基本操作与实际应用技巧,帮助开发者快速上手并高效集成到项目中,提升对es客户端的掌控能力。

weixin_29025501的博客 1209

Java操作ES(四):RestHighLevelClient操作ES的API

Create Index API RestHighLevelClient client = new RestHighLevelClient( RestClient.builder( new HttpHost("localhost", 9200, "http"), ne...

zhoushimiao1990的博客 1万+

ElasticSearch (五)Java之Elasticsearch RestHighLevelClient 基础API与函数,分组查询使用

本章通过ElasticSearch进行查询 must 多个查询条件的完全匹配,相当于 and。 mustNot 多个查询条件的相反匹配,相当于 not。 should 至少有一个查询条件匹配, 相当于 or。 1.创建查询类 1.1 根据系统id进行查询 @Slf4j @Repository public class ESDao { @Autowired ...

AudiFashion的博客 5874

Elasticsearch【文档操作、搜索操作、入门案例】(五)-全面详解(学习总结---从入门到深化)

Elasticsearch【文档操作、搜索操作、入门案例】(五)-全面详解(学习总结---从入门到深化)

1021

ElasticSearch RestHighLevelClient 教程(一)通用操作

前言 ​ 项目中使用到ElasticSearch作为搜索引擎。而ES的环境搭建自然是十分简单,且本身就适应于分布式环境,因此这块就不多赘述。而其本身特性和查询语句这篇博文不会介绍,如果有机会会深入介绍。 ​ 所以这篇博文主要还是介绍Java客户端中如何使用查询搜索引擎中的数据。而使用的Java客户端是官方新推出的RestHighLevelClient,使用Http连接查询结果。但是网上

paditang的博客 12万+

数字设计实验:RISC-V指令单周期CPU

本文旨在介绍RISC-V指令单周期CPU的设计思路和仿真实现(含代码)

2401_83740084的博客 2702

elasticsearch RestHighLevelClient 使用方法及封装工具

目录 EsClientRHL 更新日志 开发原因: 使用前你应该具有哪些技能 工具功能范围介绍 工具源码结构介绍 开始使用 未来规划 git地址:https://gitee.com/zx...

weixin_30736301的博客 3万+

英飞凌TC3xx DSADC旋变软解码实战:从示波器波形到VX1000数据,手把手教你避坑

本文详细介绍了英飞凌TC3xx系列微控制器的DSADC模块在电机旋变软解码中的实战应用。从示波器波形分析到VX1000数据采集,提供了一套完整的调试方法论,帮助工程师快速定位和解决常见问题,提升解码精度和系统性能。

weixin_30598225的博客 511

UE5 C++教程(一、基本结构)

虚幻API由三块组成,分别是Runtime,Developer utilitiew,functionality for the Editor,大多数游戏性编程只使用运行时模块,最常见的三个是Corn、CornUObject和Engine。

skycol的博客 1万+

elasticsearch 使用RestHighLevelClient

因公司使用ES搜索引擎,所以自己研究了几天,目前看网上的帖子五花八门,而且好多版本不用导致不能调用. 顾自己硬着头皮,看官方介绍,逐字翻译api,终于功夫不负有心人,demo可以使用了 本人用es最新版本es-7.2.0,客户端用RestHighLevelClient.还有一个客户端是transportClient客户端,但注意这个客户端将要被弃用.虽然本人开始研究的时候,是这个客户端,但为了...

zhangshng的博客 1万+

Keystone变换(4)MATLAB仿真

关于Keystone变换三种方法(DFT-IFFT法、Sinc插值法和Chirp-Z法)的仿真

qq_45846079的博客 1567

elasticsearch学习(七):es客户端RestHighLevelClient

Java Low Level REST Client:ES官方的低级客户端。低级别的客户端通过http与Elasticearch集群通信。Java High Level REST Client:ES官方的高级客户端。基于上面的低级客户端,也是通过HTTP与ES集群进行通信。它提供了更多的接口。客户端(Client) Jar包的版本尽量不要大于Elasticsearch本体的版本,否则可能出现客户端中使用的某些API在Elasticsearch中不支持。

weixin_40482816的博客 4万+

Stable-Baselines3性能优化:多环境训练对比指南(DummyVecEnv vs SubprocVecEnv)

本文深入对比了Stable-Baselines3中DummyVecEnv与SubprocVecEnv两种向量化环境的性能差异与应用场景。DummyVecEnv适用于轻量级、步进快的环境,调试友好且开销低;而SubprocVecEnv则通过真正的多进程并行,能显著加速计算密集型环境的训练。文章通过基准测试与决策树,指导开发者根据环境计算成本、CPU核心数等关键因素做出最优选择,以实现训练效率最大化。

weixin_29063979的博客 141

开心消消乐

1)当点击一个1时,该1变被反转为0,同时相邻的上、下、左、右,以及左上、左下、右上、右下8个方向的1(如果存在1)均会自动反转为0;2)进一步地,一个位置上的1被反转为0时,与其相邻的8个方向的1(如果存在1)均会自动反转为0;上述样例中,四个角上的1均在中间的1的相邻8个方向上,因此只需要点击一次即可。给定一个N行M列的二维矩阵,矩阵中每个位置的数字取值为0或1。在上述4 * 4的矩阵中,只需要点击2次,即可将所有的1进行消除。接下来N行表示矩阵的初始值,每行均为M个数,取值范围[0,1]

面试高手的博客 2719

Elasticsearch8.x版本中RestHighLevelClient被弃用,新版本中全新的Java客户端Elasticsearch Java API Client中常用API练习

Elasticsearch官方在8.x版本下将原来的java高级客户端RestHighLevelClient弃用,推出了全新的java客户端Elasticsearch Java API Client,本文对8.x版本下Elasticsearch的索引和文档的一些常用CRUD操作进行了整理

b___w的博客 1万+

姿态传感器/陀螺仪之IIS2DLPC 应用驱动程序设计

* 转换为°C单位 (参考温度为25°C,灵敏度为16 LSB/°C) */

corlin6688的博客 215

Elasticsearch——RestHighLevelClient

介绍 java rest client有两个实现类,分别是RestClient和RestHighLevelClient。前者是一个低级客户端,通过Http与elasticsearch集群进行通信,可以做到 负载均衡、故障转移、持久化链接、自动发现集群节点等功能,同时支持所有elasticsearch版本,但是需要自己对请求和相应做编解码(自己写JSON);后者是一个高级客户端,对增删改差进行了封...

qin_weilong的博客 4022

Ardupilot飞控姿态角与姿态角速度控制过程分析(超长篇)

目录 目录 摘要 1.代码控制过程分析 摘要 本节主要记录自己学习ardupilot飞控代码的姿态角速度的控制过程 1.代码控制过程分析 可以看出:AC_AttitudeControl *attitude_control; //指针对象 virtual void rate_controller_run() = 0;是AC_AttitudeContro...

陌城烟雨 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ES客户端RestHighLevelClient的使用

ES客户端RestHighLevelClient的使用介绍

J_bean的博客 7817

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

ElasticSearch全文搜索引擎之Aggregation聚合查询(基于RestHighLevelClient)

一、简介 前面一篇文章我们已经通过DSL构建JSON查询体,并且结合Kibana介绍了常见的聚合查询,本篇文章主要是结合ES Java 高级API实现聚合查询,工作中更多的时候都是使用客户端进行操作,使用命令太繁琐了。 二、度量查询 测试数据还是跟前面一篇文章一致,这里就不过多阐述,详细可以参照上文。 【a】 【b】 【c】 【d】 三、桶查询 【a】 【b】 【c】 【d】 四、嵌套查询 五、总结 ...

weixiaohuai的博客 8788

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Elasticsearch7.10搜索引擎RestHighLevelClient高级客户端整合Springboot基础教程

网络上关于Elasticsearch搜索引擎的教程不少, 但大多数都是比较老旧的, 甚至包括Elasticsearch官网的教程也是很久没有更新, 再加上Elasticsearch本身升级过程中不断的抛弃老旧概念, 新版本完全不兼容旧版本, 所以老旧教程给新入门的童鞋带来很多困惑. 这里使用当前Elasticsearch最新版本7.10.2结合Springboot2.X版本, 使用http rest api接口和RestHighLevelClient高级客户端封装的一些常用接口给新到的童鞋一些参考. 一

u013395802的博客 3993

使用 Elasticsearch RestHighLevelClient 进行查询

使用 Elasticsearch RestHighLevelClient 进行查询

一起coding,一起嗨。 1517

RestHighLevelClient查询es

本篇分享的是es官网推荐的es客户端组件RestHighLevelClient的使用,其封装了操作es的crud方法,底层原理就是模拟各种es需要的请求,如put,delete,get等方式;本篇主要分享常用查询,希望能给大家带来好的帮助; 分页查询 条件查询 文本模糊匹配 时间范围匹配 超时设置 es超时时间 RestHighLevelClient发送请求...

weixin_30896763的博客 1081

Java操作ES(三):RestHighLevelClient查询ES

RestHighLevelClient查询ES中数据的API主要有:get、multiGet、search、multiSearch、searchScroll,每个方法还有异步查询的操作方法。下面我们就逐个看看这些API的应用。 链接ES构建客户端: public class EsRestClient { private String IP; private int PORT...

zhoushimiao1990的博客 1万+
上一篇: Flink实战3-数据实时写入HBase的Sink方式
下一篇: Flink实战4-Flink广播流动态更新MySQL_Source配置信息实现配置化流式处理程序
Kevin_鹿
博客等级 码龄8年 2371粉丝 16原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值