这么火的ES,SpringBoot结合ElasticSearch7实现多条件复合查询

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: SpringBoot结合ElasticSearch7实现多条件复合查询

🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云星级博主

📌 擅长领域:全栈工程师、爬虫、ACM算法

💒 公众号:知识浅谈

🔥 联系方式vx:zsqtcc

🤞springBoot结合ElasticSearch7实现多条件复合查询🤞

在当前的项目中,ES几乎是不可获取的,今天来实现一下。

🎈创建ElasticSearch

为了方便,使用docker的方法创建ElasticSearch,前提是docker已经安装。

docker run -d --name ES -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” -e “ES_JAVA_OPTS=-Xms512m -Xmx512m” elasticsearch:7.14.0

上方的命令中指定9200和9300对应宿主机的9200和9300端口,.type 指定ES部署的形式为单节点而不是集群的形式,-xms -xmx 一定要制定,因为默认占用的太大,可能性能低的机器顶不住.

访问地址:http://你的ip地址:9200/

🎈创建kibana

为了方便,也选用docker的方式进行安装。

docker run -d --name kib01-test -p 5601:5601 -e “ELASTICSEARCH_HOSTS=http://你的ip地址:9200” kibana:7.14.0

上边的命令中使用ELASTICSEARCH_HOSTS指定对应的ES的地址为http://你的ip地址:9200,这样就可以在创建kibana的时候从指定的ES地址中获取数据进行监控。

访问地址:http://你的ip地址:5601/

🎈引入模板数据集

📐第 1 步:

📐第 2 步 :

📐第 3 步:查看数据

🎈创建springboot结合ElasticSearch

注意引入的依赖的版本和kibana和elasticsearch版本需要一致

🍮引入依赖

<dependency>
     <groupId>org.elasticsearch.client</groupId>
     <artifactId>elasticsearch-rest-high-level-client</artifactId>
     <version>7.14.0</version>
 </dependency>
 <dependency>
     <groupId>org.elasticsearch.client</groupId>
     <artifactId>elasticsearch-rest-client</artifactId>
     <version>7.14.0</version>
 </dependency>
 <dependency>
     <groupId>org.elasticsearch</groupId>
     <artifactId>elasticsearch</artifactId>
     <version>7.14.0</version>
 </dependency>
 <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
 <dependency>
     <groupId>com.google.code.gson</groupId>
     <artifactId>gson</artifactId>
     <version>2.9.0</version>
 </dependency>

🍮创建测试类

@SpringBootTest //说明是一个springboot 的测试用例
public class ESTestSearcher {
    @Test
    public void test() throws IOException { //说明是一个Junit的测试用例
        RestHighLevelClient restHighLevelClient = null;
        try {
            //构建客户端,创建请求
            //实例化RestHighLevelClient对象,传入IP端口
            restHighLevelClient  = new RestHighLevelClient(RestClient.builder(new HttpHost("你的ip地址",9200)));
            //构建boolean查询Builder,组织多条件查询
            BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
            //设置条件起始地:Venice 终止地:CN
            boolQueryBuilder.must(QueryBuilders.termQuery("OriginCityName","Venice"));
            boolQueryBuilder.must(QueryBuilders.termQuery("DestCountry","CN"));
            //设置附加条件  如排序
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            //把boolean查询带入searchsourcebuilder中
            searchSourceBuilder.query(boolQueryBuilder);
            searchSourceBuilder.from(0);
            searchSourceBuilder.size(10);
            //开启命中统计(部分也是总行数),这一页设置为true,否则默认上限为10000
            searchSourceBuilder.trackTotalHits(true);
            //按照平均票价升序排列
            searchSourceBuilder.sort("AvgTicketPrice", SortOrder.ASC);
            //构建查询请求,指定索引为kibana_sample_data_flights
            SearchRequest request = new SearchRequest("kibana_sample_data_flights");
            request.source(searchSourceBuilder);
            //执行查询,得到查询响应对象,封装离线集合
            SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
            //得到查询命中对象的文档集合
            SearchHit[] hits = response.getHits().getHits();//第一个getHits是得到相应的集合对象,第二个是得到响应的集合。
            ArrayList<Map<String, Object>> list = new ArrayList<>();
            Gson gson = new Gson();
            for (SearchHit hit : hits) {
                String sourceAsString = hit.getSourceAsString();
                Map<String,Object> doc = gson.fromJson(sourceAsString, new TypeToken<LinkedHashMap<String, Object>>() {
                }.getType());
                System.out.println(doc);
                list.add(doc);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            restHighLevelClient.close(); //断开连接
        }
    }
}

🍚总结

可以从上到下跟着实现一下,体验一下这个ES使用的多条件查询的过程,代码中的注释能帮助你更好的理解。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
10天前
|
SQL 前端开发 关系型数据库
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
40 9
|
1月前
|
JSON Java 网络架构
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
这篇文章介绍了如何使用Spring Boot整合REST方式来搭建和操作Elasticsearch服务。
121 4
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
|
19天前
|
JSON Java API
springboot集成ElasticSearch使用completion实现补全功能
springboot集成ElasticSearch使用completion实现补全功能
23 1
|
1月前
|
存储 JSON 监控
大数据-167 ELK Elasticsearch 详细介绍 特点 分片 查询
大数据-167 ELK Elasticsearch 详细介绍 特点 分片 查询
51 4
|
1月前
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
174 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
1月前
|
自然语言处理 Java Maven
elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
这篇博客介绍了如何使用Spring Boot整合TransportClient搭建Elasticsearch服务,包括项目创建、Maven依赖、业务代码和测试示例。
95 0
elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
|
1月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
109 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
7天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
20 5
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
3月前
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】