环球看热讯:【ES三周年】万字长文带你实战 Elasticsearch 搜索

ES 高级实战

前言

上篇我们讲到了 Elasticsearch 全文检索的原理《别只会搜日志了,求你懂点原理吧》,通过在本地搭建一套 ES 服务,以多个案例来分析了 ES 的原理以及基础使用。这次我们来讲下 Spring Boot 中如何整合 ES,以及如何在 Spring Cloud 微服务项目中使用 ES 来实现全文检索,来达到搜索题库的功能。

而且题库的数据量是非常大的,题目的答案也是非常长的,通过 ES 正好可以解决 mysql 模糊搜索的低效性。


(相关资料图)

通过本实战您可以学到如下知识点:

Spring Boot 如何整合 ES。微服务中 ES 的 API 使用。项目中如何使用 ES 来达到全文检索。

本篇主要内容如下:

主要内容

本文案例都是基于 PassJava 实战项目来演示的。

:+1:Github 地址:https://github.com/Jackson0714/PassJava-Platform

一、Elasticsearch 组件库介绍

在讲解之前,我在这里再次提下全文检索是什么:

全文检索:指以全部文本信息作为检索对象的一种信息检索技术。而我们使用的数据库,如 Mysql,MongoDB 对文本信息检索能力特别是中文检索并没有 ES 强大。所以我们来看下 ES 在项目中是如何来代替 SQL 来工作的。

我使用的 Elasticsearch 服务是 7.4.2 的版本,然后采用官方提供的 Elastiscsearch-Rest-Client 库来操作 ES,而且官方库的 API 上手简单。

该组件库的官方文档地址:

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html

另外这个组件库是支持多种语言的:

支持多语言

注意:Elasticsearch Clients就是指如何用 API 操作 ES 服务的组件库。

可能有同学会提问,Elasticsearch 的组件库中写着 JavaScript API,是不是可以直接在前端访问 ES 服务?可以是可以,但是会暴露 ES 服务的端口和 IP 地址,会非常不安全。所以我们还是用后端服务来访问 ES 服务。

我们这个项目是 Java 项目,自然就是用上面的两种:Java Rest Client或者 Java API。我们先看下 Java API,但是会发现已经废弃了。如下图所示:

Java API 已经废弃了

所以我们只能用 Java REST Client 了。而它又分成两种:高级和低级的。高级包含更多的功能,如果把高级比作MyBatis的话,那么低级就相当于JDBC。所以我们用高级的 Client。

高级和低级 Client

二、整合检索服务

我们把检索服务单独作为一个服务。就称作 passjava-search 模块吧。

1.1 添加搜索服务模块

创建 passjava-search 模块。

首先我们在 PassJava-Platform 模块创建一个 搜索服务模块 passjava-search。然后勾选 spring web 服务。如下图所示。

第一步:选择 Spring Initializr,然后点击 Next。

选择 Spring Initializr

第二步:填写模块信息,然后点击 Next。

passjava-search 服务模块

第三步:选择 Web->Spring Web 依赖,然后点击 Next。

mark

1.2 配置 Maven 依赖

参照 ES 官网配置。

进入到 ES 官方网站,可以看到有低级和高级的 Rest Client,我们选择高阶的(High Level Rest Client)。然后进入到高阶 Rest Client 的 Maven 仓库。官网地址如下所示:

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.9/index.html
Rest Client 官方文档
加上 Maven 依赖。

对应文件路径:\passjava-search\pom.xml

    org.elasticsearch.client    elasticsearch-rest-high-level-client    7.4.2
配置 elasticsearch 的版本为7.4.2

因加上 Maven 依赖后,elasticsearch 版本为 7.6.2,所以遇到这种版本不一致的情况时,需要手动改掉。

对应文件路径:\passjava-search\pom.xml

7.4.2

刷新 Maven Project 后,可以看到引入的 elasticsearch 都是 7.4.2 版本了,如下图所示:

设置版本为 7.4.2
引入 PassJava 的 Common 模块依赖。

Common 模块是 PassJava 项目独立的出来的公共模块,引入了很多公共组件依赖,其他模块引入 Common 模块依赖后,就不需要单独引入这些公共组件了,非常方便。

对应文件路径:\passjava-search\pom.xml

     com.jackson0714.passjava     passjava-common     0.0.1-SNAPSHOT

添加完依赖后,我们就可以将搜索服务注册到 Nacos注册中心了。 Nacos 注册中心的用法在前面几篇文章中也详细讲解过,这里需要注意的是要先启动 Nacos 注册中心,才能正常注册 passjava-search 服务。

1.3 注册搜索服务到注册中心

修改配置文件:src/main/resources/application.properties。配置应用程序名、注册中心地址、注册中心的命名中间。

spring.application.name=passjava-searchspring.cloud.nacos.config.server-addr=127.0.0.1:8848spring.cloud.nacos.config.namespace=passjava-search

启动类添加服务发现注解:@EnableDiscoveryClient。这样 passjava-search 服务就可以被注册中心发现了。

因 Common 模块依赖数据源,但 search 模块不依赖数据源,所以 search 模块需要移除数据源依赖:

exclude = DataSourceAutoConfiguration.class

以上的两个注解如下所示:

@EnableDiscoveryClient@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)public class PassjavaSearchApplication {    public static void main(String[] args) {        SpringApplication.run(PassjavaSearchApplication.class, args);    }}

接下来我们添加一个 ES 服务的专属配置类,主要目的是自动加载一个 ES Client 来供后续 ES API 使用,不用每次都 new 一个 ES Client。

1.4 添加 ES 配置类

配置类:PassJavaElasticsearchConfig.java

核心方法就是 RestClient.builder 方法,设置好 ES 服务的 IP 地址、端口号、传输协议就可以了。最后自动加载了 RestHighLevelClient。

package com.jackson0714.passjava.search.config;import org.apache.http.HttpHost;import org.elasticsearch.client.RestClient;import org.elasticsearch.client.RestHighLevelClient;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @Author: 公众号 | 悟空聊架构 * @Date: 2020/10/8 17:02 * @Site: www.passjava.cn * @Github: https://github.com/Jackson0714/PassJava-Platform */@Configurationpublic class PassJavaElasticsearchConfig {    @Bean    // 给容器注册一个 RestHighLevelClient,用来操作 ES    // 参考官方文档:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.9/java-rest-high-getting-started-initialization.html    public RestHighLevelClient restHighLevelClient() {        return new RestHighLevelClient(                RestClient.builder(                        new HttpHost("192.168.56.10", 9200, "http")));    }}

接下来我们测试下 ES Client 是否自动加载成功。

1.5 测试 ES Client 自动加载

在测试类 PassjavaSearchApplicationTests 中编写测试方法,打印出自动加载的 ES Client。期望结果是一个 RestHighLevelClient 对象。

package com.jackson0714.passjava.search;import org.elasticsearch.client.RestHighLevelClient;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.test.context.SpringBootTest;@SpringBootTestclass PassjavaSearchApplicationTests {    @Qualifier("restHighLevelClient")    @Autowired    private RestHighLevelClient client;    @Test    public void contextLoads() {        System.out.println(client);    }}

运行结果如下所示,打印出了 RestHighLevelClient。说明自定义的 ES Client 自动装载成功。

ES 测试结果

1.6 测试 ES 简单插入数据

测试方法 testIndexData,省略 User 类。users 索引在我的 ES 中是没有记录的,所以期望结果是 ES 中新增了一条 users 数据。

/** * 测试存储数据到 ES。 * */@Testpublic void testIndexData() throws IOException {    IndexRequest request = new IndexRequest("users");    request.id("1"); // 文档的 id        //构造 User 对象    User user = new User();    user.setUserName("PassJava");    user.setAge("18");    user.setGender("Man");        //User 对象转为 JSON 数据    String jsonString = JSON.toJSONString(user);        // JSON 数据放入 request 中    request.source(jsonString, XContentType.JSON);    // 执行插入操作    IndexResponse response = client.index(request, RequestOptions.DEFAULT);    System.out.println(response);}

执行 test 方法,我们可以看到控制台输出以下结果,说明数据插入到 ES 成功。另外需要注意的是结果中的 result 字段为 updated,是因为我本地为了截图,多执行了几次插入操作,但因为 id = 1,所以做的都是 updated 操作,而不是 created 操作。

控制台输出结果

我们再来到 ES 中看下 users 索引中数据。查询 users 索引:

GET users/_search

结果如下所示:

查询 users 索引结果

可以从图中看到有一条记录被查询出来,查询出来的数据的 _id = 1,和插入的文档 id 一致。另外几个字段的值也是一致的。说明插入的数据没有问题。

"age" : "18","gender" : "Man","userName" : "PassJava"

1.7 测试 ES 查询复杂语句

示例:搜索 bank 索引,address 字段中包含 big 的所有人的年龄分布 ( 前 10 条 ) 以及平均年龄,以及平均薪资。

1.7.1 构造检索条件

我们可以参照官方文档给出的示例来创建一个 SearchRequest 对象,指定要查询的索引为 bank,然后创建一个 SearchSourceBuilder 来组装查询条件。总共有三种条件需要组装:

address 中包含 road 的所有人。按照年龄分布进行聚合。计算平均薪资。

代码如下所示,需要源码请到我的 Github/PassJava 上下载。

查询复杂语句示例

将打印出来的检索参数复制出来,然后放到 JSON 格式化工具中格式化一下,再粘贴到 ES 控制台执行,发现执行结果是正确的。

打印出检索参数

用在线工具格式化 JSON 字符串,结果如下所示:

格式化 JSON 字符串

然后我们去掉其中的一些默认参数,最后简化后的检索参数放到 Kibana 中执行。

Kibana Dev Tools 控制台中执行检索语句如下图所示,检索结果如下图所示:

控制台中执行检索语句

找到总记录数:29 条。

第一条命中记录的详情如下:

平均 balance:13136。

平均年龄:26。

地址中包含 Road 的:263 Aviation Road。

和 IDEA 中执行的测试结果一致,说明复杂检索的功能已经成功实现。

17.2 获取命中记录的详情

而获取命中记录的详情数据,则需要通过两次 getHists() 方法拿到,如下所示:

// 3.1)获取查到的数据。SearchHits hits = response.getHits();// 3.2)获取真正命中的结果SearchHit[] searchHits = hits.getHits();

我们可以通过遍历 searchHits 的方式打印出所有命中结果的详情。

// 3.3)、遍历命中结果for (SearchHit hit: searchHits) {    String hitStr = hit.getSourceAsString();    BankMember bankMember = JSON.parseObject(hitStr, BankMember.class);}

拿到每条记录的 hitStr 是个 JSON 数据,如下所示:

{"account_number": 431,"balance": 13136,"firstname": "Laurie","lastname": "Shaw","age": 26,"gender": "F","address": "263 Aviation Road","employer": "Zillanet","email": "laurieshaw@zillanet.com","city": "Harmon","state": "WV"}

而 BankMember 是根据返回的结果详情定义的的 JavaBean。可以通过工具自动生成。在线生成 JavaBean 的网站如下:

https://www.bejson.com/json2javapojo/new/

把这个 JavaBean 加到 PassjavaSearchApplicationTests 类中:

@ToString@Datastatic class BankMember {    private int account_number;    private int balance;    private String firstname;    private String lastname;    private int age;    private String gender;    private String address;    private String employer;    private String email;    private String city;    private String state;}

然后将 bankMember 打印出来:

System.out.println(bankMember);
bankMember

得到的结果确实是我们封装的 BankMember 对象,而且里面的属性值也都拿到了。

1.7.3 获取年龄分布聚合信息

ES 返回的 response 中,年龄分布的数据是按照 ES 的格式返回的,如果想按照我们自己的格式来返回,就需要将 response 进行处理。

如下图所示,这个是查询到的年龄分布结果,我们需要将其中某些字段取出来,比如 buckets,它代表了分布在 21 岁的有 4 个。

ES 返回的年龄分布信息

下面是代码实现:

Aggregations aggregations = response.getAggregations();Terms ageAgg1 = aggregations.get("ageAgg");for (Terms.Bucket bucket : ageAgg1.getBuckets()) {    String keyAsString = bucket.getKeyAsString();    System.out.println("用户年龄: " + keyAsString + " 人数:" + bucket.getDocCount());}

最后打印的结果如下,21 岁的有 4 人,26 岁的有 4 人,等等。

打印结果:用户年龄分布

1.7.4 获取平均薪资聚合信息

现在来看看平均薪资如何按照所需的格式返回,ES 返回的结果如下图所示,我们需要获取 balanceAvg 字段的 value 值。

ES 返回的平均薪资信息

代码实现:

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

打印结果如下,平均薪资 28578 元。

打印结果:平均薪资

三、实战:同步 ES 数据

3.1 定义检索模型

PassJava 这个项目可以用来配置题库,如果我们想通过关键字来搜索题库,该怎么做呢?

类似于百度搜索,输入几个关键字就可以搜到关联的结果,我们这个功能也是类似,通过 Elasticsearch 做检索引擎,后台管理界面和小程序作为搜索入口,只需要在小程序上输入关键字,就可以检索相关的题目和答案。

首先我们需要把题目和答案保存到 ES 中,在存之前,第一步是定义索引的模型,如下所示,模型中有 titleanswer字段,表示题目和答案。

"id": {    "type": "long"},"title": {    "type": "text",    "analyzer": "ik_smart"},"answer": {    "type": "text",    "analyzer": "ik_smart"},"typeName": {    "type": "keyword"}

3.2 在 ES 中创建索引

上面我们已经定义了索引结构,接着就是在 ES 中创建索引。

在 Kibana 控制台中执行以下语句:

PUT question{"mappings" : {    "properties": {  "id": {  "type": "long"  },  "title": {  "type": "text",  "analyzer": "ik_smart"  },  "answer": {  "type": "text",  "analyzer": "ik_smart"  },  "typeName": {  "type": "keyword"  }}  }}

执行结果如下所示:

创建 question 索引

我们可以通过以下命令来查看 question 索引是否在 ES 中:

GET _cat/indices

执行结果如下图所示:

查看 ES 中所有的索引

3.3 定义 ES model

上面我们定义 ES 的索引,接着就是定义索引对应的模型,将数据存到这个模型中,然后再存到 ES 中。

ES 模型如下,共四个字段:id、title、answer、typeName。和 ES 索引是相互对应的。

@Datapublic class QuestionEsModel {    private Long id;    private String title;    private String answer;    private String typeName;}

3.4 触发保存的时机

当我们在后台创建题目或保存题目时,先将数据保存到 mysql 数据库,然后再保存到 ES 中。

如下图所示,在管理后台创建题目时,触发保存数据到 ES 。

mark

第一步,保存数据到 mysql 中,项目中已经包含此功能,就不再讲解了,直接进入第二步:保存数据到 ES 中。

而保存数据到 ES 中,需要将数据组装成 ES 索引对应的数据,所以我用了一个 ES model,先将数据保存到 ES model 中。

3.5 用 model 来组装数据

这里的关键代码时 copyProperties,可以将 question对象的数据取出,然后赋值到 ES model 中。不过 ES model 中还有些字段是 question 中没有的,所以需要单独拎出来赋值,比如 typeName 字段,question 对象中没有这个字段,它对应的字段是 question.type,所以我们把 type 取出来赋值到 ES model 的 typeName 字段上。如下图所示:

用 model 来组装数据

3.6 保存数据到 ES

我在 passjava-search 微服务中写了一个保存题目的 api 用来保存数据到 ES 中。

保存数据到 ES

然后在 passjava-question 微服务中调用 search 微服务的保存 ES 的方法就可以了。

// 调用 passjava-search 服务,将数据发送到 ES 中保存。searchFeignService.saveQuestion(esModel);

3.7 检验 ES 中是否创建成功

我们可以通过 kibana 的控制台来查看 question 索引中的文档。通过以下命令来查看:

GET question/_search

执行结果如下图所示,有一条记录:

mark

另外大家有没有疑问:可以重复更新题目吗?

答案是可以的,保存到 ES 的数据是幂等的,因为保存的时候带了一个类似数据库主键的 id。

四、实战:查询 ES 数据

我们已经将数据同步到了 ES 中,现在就是前端怎么去查询 ES 数据中,这里我们还是使用 Postman 来模拟前端查询请求。

4.1 定义请求参数

请求参数我定义了三个:

keyword:用来匹配问题或者答案。id:用来匹配题目 id。pageNum:用来分页查询数据。

这里我将这三个参数定义为一个类:

@Datapublic class SearchParam {    private String keyword; // 全文匹配的关键字    private String id; // 题目 id    private Integer pageNum; // 查询第几页数据}

4.2 定义返回参数

返回的 response 我也定义了四个字段:

questionList:查询到的题目列表。pageNum:第几页数据。total:查询到的总条数。totalPages:总页数。

定义的类如下所示:

@Datapublic class SearchQuestionResponse {    private List questionList; // 题目列表    private Integer pageNum; // 查询第几页数据    private Long total; // 总条数    private Integer totalPages; // 总页数}

4.3 组装 ES 查询参数

调用 ES 的查询 API 时,需要构建查询参数。

组装查询参数的核心代码如下所示:

组装查询参数
第一步:创建检索请求。第二步:设置哪些字段需要模糊匹配。这里有三个字段:title,answer,typeName。第三步:设置如何分页。这里分页大小是 5 个。第四步:调用查询 api。

4.4 格式化 ES 返回结果

ES 返回的数据是 ES 定义的格式,真正的数据被嵌套在 ES 的 response 中,所以需要格式化返回的数据。

核心代码如下图所示:

格式化 ES 返回结果
第一步:获取查到的数据。第二步:获取真正命中的结果。第三步:格式化返回的数据。第四步:组装分页参数。

4.5 测试 ES 查询

4.5.1 实验一:测试 title 匹配

我们现在想要验证 title 字段是否能匹配到,传的请求参数 keyword = 111,匹配到了 title = 111 的数据,且只有一条。页码 pageNum 我传的 1,表示返回第一页数据。如下图所示:

测试匹配 title

4.5.2 实验二:测试 answer 匹配

我们现在想要验证 answer 字段是否能匹配到,传的请求参数 keyword = 测试答案,匹配到了 title = 测试答案的数据,且只有一条,说明查询成功。如下图所示:

测试匹配 answer

4.5.2 实验三:测试 id 匹配

我们现在想要匹配题目 id 的话,需要传请求参数 id,而且 id 是精确匹配。另外 id 和 keyword 是取并集,所以不能传 keyword 字段。

请求参数 id = 5,返回结果也是 id =5 的数据,说明查询成功。如下图所示:

测试 id 匹配

五、总结

本文通过我的开源项目 passjava 来讲解 ES 的整合,ES 的 API 使用以及测试。非常详细地讲解了每一步该如何做,相信通过阅读本篇后,再加上自己的实践,一定能掌握前后端该如何使用 ES 来达到高效搜索的目的。

当然,ES API 还有很多功能未在本文实践,有兴趣的同学可以到 ES 官网进行查阅和学习。

标签: Java ElasticsearchService

上一篇 :

下一篇 :

分享到 :

推荐阅读

环球看热讯:【ES三周年】万字长文带你实战 Elasticsearch 搜索

环球看热讯:【ES三周年】万字长文带你实战 Elasticsearch 搜索

上篇我们讲到了Elasticsearch全文检索的原理《别只会搜日志了,求你懂点原理吧》,通过在本地搭建一套ES...

2023-02-24
每日热议!伊朗一直升机坠毁造成1死17伤,体育部长等官员也在机上

每日热议!伊朗一直升机坠毁造成1死17伤,体育部长等官员也在机上

伊朗一直升机坠毁造成1死17伤,体育部长等官员也在机上,坠毁,直升机,伊朗,德黑兰,克尔曼

2023-02-24
最新快讯!施工生产不停歇!龙井市多家企业奋力冲刺“开门红”

最新快讯!施工生产不停歇!龙井市多家企业奋力冲刺“开门红”

施工生产不停歇!龙井市多家企业奋力冲刺“开门红”

2023-02-24
全球观点:ccaa国家注册审核员考试网_奥鹏网ccaa

全球观点:ccaa国家注册审核员考试网_奥鹏网ccaa

1、夜大本科,想考CCAA国家注册的审核员,而且现在正在接触相关的工作。2、主要不知道取得注册审核员的...

2023-02-24
世界热消息:汉王科技董秘回复:公司是AI和大数据领域的技术、产品和服务提供商,是数字化产业的企业

世界热消息:汉王科技董秘回复:公司是AI和大数据领域的技术、产品和服务提供商,是数字化产业的企业

汉王科技(002362)02月24日在投资者关系平台上答复了投资者关心的问题。

2023-02-24
天天观速讯丨代理记账一个月多少钱-代理记账一年多少钱

天天观速讯丨代理记账一个月多少钱-代理记账一年多少钱

1、小规模代理记账一个月200元,一年2400元。2、一般纳税人代理记账一个月700元,一年8400元。本文到此...

2023-02-23
世界热头条丨美媒:通胀和利率飙升,信用卡债务淹没美国人

世界热头条丨美媒:通胀和利率飙升,信用卡债务淹没美国人

美媒:通胀和利率飙升,信用卡债务淹没美国人,美媒,信用卡,拖欠率,纽约联储,个人银行业务

2023-02-23
天天即时看!【TKE】 配置事件告警实践

天天即时看!【TKE】 配置事件告警实践

2 选择导航栏左侧运维中心>日志管理>事件日志,进入“事件检索”页面。通过事件仪表盘检索已有的事件样...

2023-02-23
环球简讯:突发!中美增加航班无望?!美联航推迟到10月底才会增加航班

环球简讯:突发!中美增加航班无望?!美联航推迟到10月底才会增加航班

突发!中美增加航班无望?!美联航推迟到10月底才会增加航班,直飞,美联航,美航班,达美航空,增加航班,美...

2023-02-23
动态焦点:通州区重点产业知识产权运营公共服务平台上线运行

动态焦点:通州区重点产业知识产权运营公共服务平台上线运行

通州区重点产业知识产权运营公共服务平台上线运行2月20日,南通(通州)知识产权运营平台正式上线运行。...

2023-02-23
【全球独家】中国移动互联网用户规模突破12亿 BAT仍保持用户量优势

【全球独家】中国移动互联网用户规模突破12亿 BAT仍保持用户量优势

编程客栈()2月23日消息:据QuestMobile发布的《2022年中国移动互联网年度报告》显示,2022年,中国移动互...

2023-02-23
今亮点!2022年美国电动汽车注册量上涨57% 份额涨至5.6%

今亮点!2022年美国电动汽车注册量上涨57% 份额涨至5.6%

2022年美国电动汽车注册量上涨57%份额涨至5 6%

2023-02-23
全球今头条!魔兽世界神器任务攻略_魔兽世界神器任务

全球今头条!魔兽世界神器任务攻略_魔兽世界神器任务

1、开7 0先会接到职业大厅任务,在职业大厅会接到职业神器任务,每个职业每一系列天赋专精神器都不相同...

2023-02-23
焦点信息:严的部首是什么的读法

焦点信息:严的部首是什么的读法

一、关于严的部首是什么的读法1、读法:[yán]二、关于严的部首是什么的释义2、基础释义:1 严密;紧密...

2023-02-22
世界快资讯丨新型农村社会养老保险

世界快资讯丨新型农村社会养老保险

1、新型农村社会养老保险(anewtypeofpensioninsuranceforruralresid

2023-02-22
每日消息!电子签章怎么申请

每日消息!电子签章怎么申请

1搜索公众号打开微信,搜索德邦微信公众号,点击进入。2点击个人中心然后点击右下角我,点击个人中心。3...

2023-02-22
当前要闻:2022年浙江省人口主要数据公布 11市出生率均有所下降

当前要闻:2022年浙江省人口主要数据公布 11市出生率均有所下降

浙江统计消息按照国家统计局统一部署,2022年浙江省5‰人口变动抽样调查以全省为总体,以11个设区市为子...

2023-02-22
今日播报!演员李乃文:和黄曼传绯闻,与颜丙燕意难平,今49岁仍未婚

今日播报!演员李乃文:和黄曼传绯闻,与颜丙燕意难平,今49岁仍未婚

“当我事业发展不好的时候,想一想李乃文我就没那么难受了。”李乃文的朋友说。李乃文是谁?听到这个名...

2023-02-22
每日快看:中国飞鹤获“全国就业与社会保障先进民营企业”称号

每日快看:中国飞鹤获“全国就业与社会保障先进民营企业”称号

近日,全国工商联、人力资源和社会保障部门、全国总工会联合发布“全国就业与社会保障先进民营企业和全...

2023-02-22
天天滚动:lowe玻璃_说一说lowe玻璃的简介

天天滚动:lowe玻璃_说一说lowe玻璃的简介

夏弥来为大家解答以下的问题,lowe玻璃,说一说lowe玻璃的简介,现在让我们一起来看看吧!1、Low-E玻璃...

2023-02-22
世界要闻:「机构调研记录」融通基金调研汤姆猫、汇川技术

世界要闻:「机构调研记录」融通基金调研汤姆猫、汇川技术

根据市场公开信息及2月21日披露的机构调研信息,融通基金近期对2家上市公司进行了调研,相关名单如下:1...

2023-02-22
环球今亮点!联想a789驱动安装_联想手机a798t驱动

环球今亮点!联想a789驱动安装_联想手机a798t驱动

1、A789驱动安装2、下载a789驱动,解压。3、继续解压缩解压缩文件夹中的两个zip文件。4、进入设备管理器。5、进

2023-02-22
环球微动态丨佛堂镇社会治理中心揭牌

环球微动态丨佛堂镇社会治理中心揭牌

佛堂镇社会治理中心揭牌2月17日,佛堂镇社会治理中心揭牌仪式举行。市委副书记、政法委书记唐剑刚,市委...

2023-02-21
每日快报!浙江又一学校通知:停课!

每日快报!浙江又一学校通知:停课!

“宁波有学校停课了吗?是疫情吗?”“宁波感染小高峰要来了吗?”2月20日,宁波杭州湾新区世纪城实验小...

2023-02-21
今日精选:大宗交易:机构账户买入惠城环保399.75万元(02-21)

今日精选:大宗交易:机构账户买入惠城环保399.75万元(02-21)

2023年2月21日,惠城环保发生1笔大宗交易,总成交10 97万股,成交金额399 75万元,成交价36 44元,折价14 20%。

2023-02-21
全球今日报丨“空气没事,但别出门;水没事,但喝瓶装水”——美国“毒列车”事故阴云不散

全球今日报丨“空气没事,但别出门;水没事,但喝瓶装水”——美国“毒列车”事故阴云不散

美国有毒化学品运载列车脱轨事故至今不断发酵。布蒂吉格说,美国国家运输安全委员会正调查脱轨原因,联...

2023-02-21
世界今日讯!尿蛋白一个加号一个减号什么意思_尿蛋白一个加号

世界今日讯!尿蛋白一个加号一个减号什么意思_尿蛋白一个加号

1、你好,根据你的描述2007年发现有高血压,一直没有治疗,2008年左耳朵至今一直响,可能是血压高引起,目前...

2023-02-21
世界简讯:大学生付费就业咨询热潮渐起 花钱咨询效果更好吗

世界简讯:大学生付费就业咨询热潮渐起 花钱咨询效果更好吗

大学生付费就业咨询热潮渐起花钱咨询效果更好吗

2023-02-21
世界即时看!凤眼菩提怎么挑选尺寸_凤眼菩提怎么挑选

世界即时看!凤眼菩提怎么挑选尺寸_凤眼菩提怎么挑选

1、您好挑选凤眼菩提以下几个方面首先看密度。2、凤眼捻起来籽来感觉重。3、通常好的凤眼和星月重量相等...

2023-02-21
观热点:万户捣衣声是什么意思_万户捣衣声

观热点:万户捣衣声是什么意思_万户捣衣声

1、意思是家家户户都传来捣衣服的声音。以上就是【万户捣衣声是什么意思,万户捣衣声】相关内容。

2023-02-21
环球看热讯:经期头痛的原因和治疗方法吃什么药_经期头痛的原因和治疗方法

环球看热讯:经期头痛的原因和治疗方法吃什么药_经期头痛的原因和治疗方法

1、经期头痛引起的原因很多,女性经期头痛主要是因内分泌失调、排卵障碍、子宫内膜异位或炎症等,属中医...

2023-02-20
全球看点:人工智能大咖圆桌会探讨ChatGPT发展趋势

全球看点:人工智能大咖圆桌会探讨ChatGPT发展趋势

信息时报讯(记者崔小远通讯员聂淑瑜)日前,在广州市南沙区科学技术局的指导下,南沙科金控股集团在南...

2023-02-20
每日快讯!瞄准新材料赛道蓄势发力 陈宇龙率队赴广州惠州合肥等地考察

每日快讯!瞄准新材料赛道蓄势发力 陈宇龙率队赴广州惠州合肥等地考察

抢时间、拼速度,寻新机、拓市场……长春新区工作会召开后,长春市委常委、副市长、长春新区党工委书记...

2023-02-20
环球今日报丨LPR再持稳,后续调降空间仍存

环球今日报丨LPR再持稳,后续调降空间仍存

2月贷款市场报价利率(LPR)出炉:1年期和5年期以上LPR分别维持在3 65%和4 30%不变。分析人士认为,由...

2023-02-20
环球资讯:苹果手机怎么修复来电归属地错误_苹果手机来电显示归属地错误怎么解决

环球资讯:苹果手机怎么修复来电归属地错误_苹果手机来电显示归属地错误怎么解决

1、苹果手机来电归属地错误如何修复?只需要几个简单的操作,具体操作如下:2、打开iPhone上的【设置】...

2023-02-20
全球焦点!组图丨常宁:高标准农田建设备春耕

全球焦点!组图丨常宁:高标准农田建设备春耕

2月19日,施工人员在常宁市三角塘镇塘冲村高标准农田建设现场施工(无人机照片)。眼下,湖南省常宁市高...

2023-02-20
【新要闻】佐助vs八尾搞笑配音_佐助vs八尾

【新要闻】佐助vs八尾搞笑配音_佐助vs八尾

1、不明白有人说佐助赢的有没有脑子,佐助被人打残两次,还群攻一个。2、还是打不赢,最后逼着用天照,...

2023-02-20
世界滚动:钱学森被称为什么之父 钱学森是什么之父

世界滚动:钱学森被称为什么之父 钱学森是什么之父

1、钱学森被称为中国航天之父、中国导弹之父、中国自动化控制之父、火箭之王。2、钱学森1911年12月11日...

2023-02-20
当前热讯:英雄联盟军神战甲波比价格_军神战甲波比有特效

当前热讯:英雄联盟军神战甲波比价格_军神战甲波比有特效

1、军神。2、个人观点。本文分享完毕,希望对大家有所帮助。

2023-02-20
今日报丨我国首批出口中非地区交流传动内燃机车项目签约,整车全国产化

今日报丨我国首批出口中非地区交流传动内燃机车项目签约,整车全国产化

中车资阳表示,该批机车是我国窄轨交流传动内燃机车出口领域,首批实现从零部件到整车全国产化、且具有...

2023-02-19
速递!晚安寄语:家以和为贵

速递!晚安寄语:家以和为贵

家以和为贵人以正为贵,家以和为贵。中国人自古以来流传的古训:家和万事兴。《礼记·大学》中提到:修...

2023-02-19
全球资讯:实干争春早  福州水利工程建设奋战首季“开门稳”

全球资讯:实干争春早  福州水利工程建设奋战首季“开门稳”

当年味浓厚的福州城喜迎新春,万家灯火点亮阖家团聚的幸福时光,在福建平潭及闽江口水资源配置工程(即...

2023-02-19
焦点要闻:4次动作3次满分 麦克朗征服全场夺扣篮大赛冠军

焦点要闻:4次动作3次满分 麦克朗征服全场夺扣篮大赛冠军

3次满分!麦克朗加冕全明星扣篮王

2023-02-19
世界看热讯:中国队加油!中国男篮世预赛16人大名单

世界看热讯:中国队加油!中国男篮世预赛16人大名单

本次窗口期,中国男篮将先后与哈萨克斯坦男篮和伊朗男篮交手,比赛时间如下(均为北京时间):2023年2月...

2023-02-19
今日关注:性能最好的踏板车_踏板车什么牌子的最好

今日关注:性能最好的踏板车_踏板车什么牌子的最好

1、质量性能较好的踏板摩托车。2、象合资品牌的五羊本田、新大洲本田、轻骑铃木、豪爵铃木、雅马哈、常...

2023-02-19
环球要闻:02月19日00时广东广州疫情数据 阳了以后为什么会腰疼?应该怎么办?

环球要闻:02月19日00时广东广州疫情数据 阳了以后为什么会腰疼?应该怎么办?

02月19日00时广东广州疫情数据阳了以后为什么会腰疼?应该怎么办?以下为详情!一、02月19日00时广州疫...

2023-02-19
每日播报!多个视频曝出美国俄亥俄州列车脱轨事发地水源污染严重

每日播报!多个视频曝出美国俄亥俄州列车脱轨事发地水源污染严重

当地时间2月3日晚,美国诺福克南方铁路公司一列货运列车途经俄亥俄

2023-02-18
观速讯丨加的斯球员:我和朋友打赌佩德里迟早会赢得金球奖

观速讯丨加的斯球员:我和朋友打赌佩德里迟早会赢得金球奖

加的斯球员:我和朋友打赌佩德里迟早会赢得金球奖,鲁本,佩德里,加的斯,金球奖,日本足球,足球竞赛,候选名...

2023-02-18
全球通讯!便民服务,厦禾分部早间提前半小时开诊!

全球通讯!便民服务,厦禾分部早间提前半小时开诊!

便民服务,厦禾分部早间提前半小时开诊!,

2023-02-18
天天动态:开除TheShy能进世界赛?DOINB大胆建议:小虎转型上单,WBG买自己

天天动态:开除TheShy能进世界赛?DOINB大胆建议:小虎转型上单,WBG买自己

开除前言自从DOINB在直播中宣布新赛季休息之后,很多DOINB粉丝也自发地,开始为DOINB找工作,只要看见有...

2023-02-18
看点:梅派唱腔琴谱集

看点:梅派唱腔琴谱集

1、本卷为梅兰芳大师二十世纪五十年代录音。2、与中国唱片公司一九八七年出版的《梅兰芳唱腔选集》第七...

2023-02-18
每日讯息!苹果iPhone 15 Pro渲染图曝光:改用USB-C端口,摄像头凸起加厚

每日讯息!苹果iPhone 15 Pro渲染图曝光:改用USB-C端口,摄像头凸起加厚

苹果iPhone15Pro渲染图曝光:改用USB-C端口,摄像头凸起加厚,手机,摄像头,保护壳,音量键,苹果公司,财务...

2023-02-17
全球热议:一杯咖啡暖人心 星巴克获首届上海慈善奖捐赠企业奖

全球热议:一杯咖啡暖人心 星巴克获首届上海慈善奖捐赠企业奖

东方网记者曹磊2月17日报道:今天上午,首届“上海慈善奖”表彰活动举办,星巴克凭借在中国慈善公益领域...

2023-02-17
当前速讯:西安欧亚学院后勤集团年度工作会议暨年度优秀员工表彰典礼顺利召开

当前速讯:西安欧亚学院后勤集团年度工作会议暨年度优秀员工表彰典礼顺利召开

2月9日,西安欧亚学院后勤集团年度工作会议暨年度优秀员工表彰典礼在大学生活动中心顺利召开。本次年度...

2023-02-17
【世界快播报】快餐盒生产商易和国际多轨发展 拓影视电商业务

【世界快播报】快餐盒生产商易和国际多轨发展 拓影视电商业务

去年底公布可能转板消息的易和国际(8659 HK),最近一年动作频频,似乎密锣紧鼓积极部署各种业务,包括其核...

2023-02-17
世界快资讯丨新华全媒+|4天盖好一层楼!探秘“空中造楼机”

世界快资讯丨新华全媒+|4天盖好一层楼!探秘“空中造楼机”

它让露天工地变室内工厂,它让建筑施工在百米高空如履平地,它最快4天盖好一层楼……“造楼机”实现了市...

2023-02-17
观察:丹尼-格林:很高兴看到76人队员的提升 哈登无需像过去那样得分了

观察:丹尼-格林:很高兴看到76人队员的提升 哈登无需像过去那样得分了

丹尼-格林本周接受采访时谈到了前东家76人,他回归骑士的首场比赛,恰好是与76人交手。谈及哈登,丹尼-...

2023-02-17
环球热点评!水刀切割机一套多少钱_水刀切割机

环球热点评!水刀切割机一套多少钱_水刀切割机

1、三轴智能水刀的价格50-65万五轴智能水刀LTJ2040-5A全套的105万狮迈五轴智能水刀LTJ1613-5A

2023-02-17
世界观速讯丨手工创意贺卡大全图片_手工创意贺卡大全

世界观速讯丨手工创意贺卡大全图片_手工创意贺卡大全

1、教师节礼物手工DIY教师节贺卡制作图片教程创意设计|DIY卡片 2014-09-07 小海牛 88574℃猜你喜欢:

2023-02-17
天天新消息丨顶流预定! 2023广州必看现象级项目,已经杀出

天天新消息丨顶流预定! 2023广州必看现象级项目,已经杀出

蛰伏已久的广州楼市,热度再度回归!上周2万组客户,风风火火杀入售楼部,多盘斩下开门红。政策也出现松...

2023-02-16
当前要闻:基煜基金董事长王翔:机构投资者已成为资本市场长期稳定的“压舱石”

当前要闻:基煜基金董事长王翔:机构投资者已成为资本市场长期稳定的“压舱石”

随着资管新规的落地,在净值化转型要求下,如何进行资产配置再次成为银行理财子等资管机构面临的一大难...

2023-02-16
环球最新:昌平南口国土空间规划公示,未来将建清华科学城

环球最新:昌平南口国土空间规划公示,未来将建清华科学城

昌平南口国土空间规划公示,未来将建清华科学城

2023-02-16
每日时讯!十一部门部署第二十四次全国爱耳日活动

每日时讯!十一部门部署第二十四次全国爱耳日活动

十一部门部署第二十四次全国爱耳日活动---今年3月3日是第二十四次全国爱耳日,中国残联、教育部、工业和...

2023-02-16
每日快看:你知道吗?!你一直用的都是错误的护肤步骤

每日快看:你知道吗?!你一直用的都是错误的护肤步骤

不知道大家有没有看见过类似于上图这种“科学护肤步骤”“正确护肤步骤”“早晚护肤步骤”等等各种各样...

2023-02-16
世界热资讯!民航局:已恢复与58个国家间的客运定期航班,换季后国际航班有望进一步增加

世界热资讯!民航局:已恢复与58个国家间的客运定期航班,换季后国际航班有望进一步增加

民航局:已恢复与58个国家间的客运定期航班,换季后国际航班有望进一步增加,客运,民航局,航班量,航空公...

2023-02-16
全球报道:被指“店大欺客”,比亚迪成了“商业噩梦”?

全球报道:被指“店大欺客”,比亚迪成了“商业噩梦”?

1孰是孰非?共享出行品牌iGO出行和比亚迪撕起来了,或者准确点,是和比亚迪旗下的腾势在撕。2月10日、11...

2023-02-16
全球百事通!阿德耶米:面对恩佐,我唯一想的就是我要带球过掉他

全球百事通!阿德耶米:面对恩佐,我唯一想的就是我要带球过掉他

在今日凌晨进行的一场欧冠1 8决赛首回合较量中,多特蒙德1-0击败切尔西。赛后在接受DAZN采访时,多特进...

2023-02-16
世界热门:后厨里的规矩_后厨里的游戏机

世界热门:后厨里的规矩_后厨里的游戏机

1、【10月21日辽宁新闻、太平洋电脑网】在最近播出的电视剧《后厨》中,海清饰演的女厨师徐炳给人们留下...

2023-02-16
天天播报:看手相算命图解

天天播报:看手相算命图解

手相算命中,可以从你的手相中看出未来的性格以及命运如何,那么你想知道怎样看手相知道未来的命运以及...

2023-02-16
天天快看点丨工资到账需要多久

天天快看点丨工资到账需要多久

工资打到卡上的具体时间各有不同,比如公司当天早上将员工数据交给银行,那么下午六点就能办好,如果公...

2023-02-16
环球滚动:5月18日什么星座

环球滚动:5月18日什么星座

5月18日是什么星座:5月18日是金牛座5月18日出生的金牛座富有理想喔!思路清晰、逻辑观念强的你,喜欢尝...

2023-02-16
全球热推荐:英语作文七年级下册范文(合集74篇)

全球热推荐:英语作文七年级下册范文(合集74篇)

英语作文七年级下册范文第1篇Afewdaysago,themovieRedSeaOperationwasveryhotandpeoplewereveryimpressi...

2023-02-15
全球观点:奔驰s350l报价多少钱_3.0T最低落地价需要95.29万

全球观点:奔驰s350l报价多少钱_3.0T最低落地价需要95.29万

1、奔驰S350L作为奔驰旗下的一款轿跑,自上市以来就以其靓丽的外观和高端的配置吸引了大批消费者。最近...

2023-02-15
环球热头条丨乡村振兴包括哪些方面投入_乡村振兴包括哪些方面

环球热头条丨乡村振兴包括哪些方面投入_乡村振兴包括哪些方面

1、乡村振兴包含哪些内容——到2020年,乡村振兴取得重要进展,制度框架和政策体系基本形成;——到2035...

2023-02-15
热点评!教育部首届全国校外培训监管专家委员会成立

热点评!教育部首届全国校外培训监管专家委员会成立

中国教育新闻网讯(记者焦小新)为充分发挥专家作用,广泛动员社会力量参与校外培训治理,教育部2022年...

2023-02-15
今日看点:只需13.99美元即可以97%的折扣为父母和孩子编写完整的教育应用程序

今日看点:只需13.99美元即可以97%的折扣为父母和孩子编写完整的教育应用程序

今天突出显示的交易来自NeowinDeals商店的在线课程部分,您可以在这个完整的父母和孩子编码中节省97%。无论您的

2023-02-15
当前快看:什么是msci中国指数

当前快看:什么是msci中国指数

MSCI中国指数是由摩根斯坦利国际资本公司(MSCI)编制的跟踪中国概念股票表现的指数。MSCI中国指数系列...

2023-02-15
实时焦点:安全模式怎么解除 如何解除安全模式

实时焦点:安全模式怎么解除 如何解除安全模式

1、安全模式解除的方法,如果绑定了微信可以用微信进行验证,或者验证高级密保问题,就可解除该模式。2...

2023-02-15
当前聚焦:有没有类似胡莱三国的网页游戏_胡莱三国 战争策略类网页游戏

当前聚焦:有没有类似胡莱三国的网页游戏_胡莱三国 战争策略类网页游戏

当前大家对于胡莱三国战争策略类网页游戏都是颇为感兴趣的,大家都想要了解一下胡莱三国战争策略类网页...

2023-02-15
环球最资讯丨Buzzfeed推出引入AI的测试栏目

环球最资讯丨Buzzfeed推出引入AI的测试栏目

2月15日消息,据外媒报道,Buzzfeed推出引入AI技术的测试栏目quizzes,CEOJonahPeretti表示,AI生成的内...

2023-02-15
当前速讯:我的前半生全集剧情简介

当前速讯:我的前半生全集剧情简介

电视剧我的前半生是由靳东、马伊琍、袁泉等人主演,此部剧口碑还是非常的好,那么我们先看看我的前半生...

2023-02-15
微动态丨如何制作月亮石

微动态丨如何制作月亮石

你需要的东西碗自硬化或风干粘土网球报纸抹布亚克力釉海绵刷使用粘土和网球制作您自己的月球岩石版本。...

2023-02-15
环球动态:比利时将首次关闭核反应堆

环球动态:比利时将首次关闭核反应堆

据央视新闻,比利时核电运营商Engie集团当地时间9月23日表示,比利时将在当天晚些时候正式关闭“杜尔3号...

2023-02-15
世界快播:两学一做学习教育动员部署会讲话稿

世界快播:两学一做学习教育动员部署会讲话稿

两学一做是当前我党加强思想建设、推进从严治党、提高党性修养的重大举措。下面就是学习啦小编给大家整...

2023-02-15
环球快讯:环氧树脂是如何制成的?

环球快讯:环氧树脂是如何制成的?

基本环氧树脂是一种坚硬的物质,当两种物质(环氧化物和多胺)结合时产生。大多数情况下,这两种化学物...

2023-02-15
环球最新:描写大象的词语精选

环球最新:描写大象的词语精选

大象是现存世界上最大的陆栖哺乳动物。大象是群居性动物,以家族为单位,非洲象由雌象做首领,每天活动...

2023-02-15
天天简讯:阳了应该怎么办-阳性感染者如何用药 02月15日00时安徽马鞍山疫情数据

天天简讯:阳了应该怎么办-阳性感染者如何用药 02月15日00时安徽马鞍山疫情数据

青壮年一般高烧阶段不超过3天,到第4、第5天会明显好转。如高烧持续3天以上,且没有缓解趋势,建议前往...

2023-02-15
天天热资讯!小孩尿床的原因是什么

天天热资讯!小孩尿床的原因是什么

生活当中有些小孩会有尿床的情况,而导致小孩尿床的原因有很多,那么小孩尿床是什么原因呢?有哪些方法可...

2023-02-14
每日快播:主日学圣诞游戏

每日快播:主日学圣诞游戏

对许多人来说,圣诞节是一个庆祝的日子,对于基督教信仰的人来说,节日的庆祝活动可以延伸到主日学课程...

2023-02-14
热推荐:炮制热点挑矛盾 误读政策博眼球——中国互联网联合辟谣平台2023年1月辟谣榜综述

热推荐:炮制热点挑矛盾 误读政策博眼球——中国互联网联合辟谣平台2023年1月辟谣榜综述

2023年1月,正值疫情防控进入新阶段后的首个春节。中国互联网联合辟谣平台根据网上数据监测和网民举报,...

2023-02-14
焦点要闻:办健康证需要带什么

焦点要闻:办健康证需要带什么

办健康证需要带什么根据《食品卫生法》、《公共场所卫生管理条例》等法规,从事食品生产经营,公共场所...

2023-02-14
天天百事通!霞浦补一次牙多少钱_补一颗牙要多少钱一颗

天天百事通!霞浦补一次牙多少钱_补一颗牙要多少钱一颗

1、如果需要补牙,具体价格需要看牙齿不好的程度。2、如果只是单纯的龋齿,有两种修复方法:第一种方法...

2023-02-14
【环球播资讯】詹姆斯连休湖人战线告急 冲刺季后赛席位不应儿戏

【环球播资讯】詹姆斯连休湖人战线告急 冲刺季后赛席位不应儿戏

詹姆斯连休湖人战线告急冲刺季后赛席位不应儿戏,湖人,威少,全明星,美国篮球,中国篮球,勒布朗詹姆斯,道格...

2023-02-14
环球实时:艾科试剂官网_爱客仕核销

环球实时:艾科试剂官网_爱客仕核销

1、1 打开财务软件——,进入财务软件——主页面,点击“财务会计”。2、【注:“财务会计”位于财务软...

2023-02-14
视讯!qq空间留言主人寄语很温馨的

视讯!qq空间留言主人寄语很温馨的

即使光环已不再也不要放弃你的梦想。像这样的qq空间主人寄语励志短语还有哪些呢?今天小编要与大家分享的...

2023-02-14
微资讯!新房入住送什么礼物好

微资讯!新房入住送什么礼物好

新居入住新宅的一个好宅,一定要去看望新宅的人了,但是也要带礼物,那么送他们什么好。送一些室内的用...

2023-02-14
世界今头条!原神风神瞳位置大全最新_原神风神瞳位置

世界今头条!原神风神瞳位置大全最新_原神风神瞳位置

1、风神之瞳在凤龙遗址的12个位置如下图所示。2、明观峡(6)3、果酒湖(2)4、望峰山(2)5、了望角度(2)6、星崖

2023-02-14
【焦点热闻】太阳要继续补强?保罗希望管理层签约甜瓜冲冠

【焦点热闻】太阳要继续补强?保罗希望管理层签约甜瓜冲冠

北京时间2月14日,据相关媒体报道,卡梅罗-安东尼自上个赛季结束之后,一直到目前仍旧是自由球员。近日...

2023-02-14
视讯!诺基亚是哪个国家的品牌?

视讯!诺基亚是哪个国家的品牌?

专家回答(3)诺基亚公司是一家总部位于芬兰埃斯波,主要从事移动通信设备生产和相关服务的跨国公司。诺...

2023-02-14
新消息丨明亮拼音怎么写_明亮拼音

新消息丨明亮拼音怎么写_明亮拼音

1、明亮拼音:2、明亮的3、明亮的色调:4、明明的声调是两个声调,亮丽的声调是四个声调。5、明亮拼音:...

2023-02-14
x 广告
x 广告

Copyright ©  2015-2022 西南水产网版权所有  备案号:皖ICP备2022009963号-8   联系邮箱:39 60 29 14 2@qq.com