7、Spring Boot检索

1.ElasticSearch简介

  Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能,github等大型的站点也是采用了ElasticSearch作为其搜索服务。

  我们经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引擎的首选。因为它可以快速的存储、搜索和分析海量数据。Spring Boot通过整合Spring Data ElasticSearch为我们提供了非常便捷的检索功能支持。

2.ElasticSearch概念  

 

 

3.ElasticSearch搭建

(1).docker搭建ElasticSearch

  docker上搭建ElasticSearch环境

[root@hosystem ~]# docker search elasticsearch

NAME                                 DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED

elasticsearch                        Elasticsearch is a powerful open source sear…   4675                [OK]                

[root@hosystem ~]# docker pull elasticsearch:6.8.4

6.8.4: Pulling from library/elasticsearch

d8d02d457314: Pull complete

d3dfcf2fdd68: Pull complete

c8ffe81b87d5: Pull complete

3fdfbe1a7641: Pull complete

dba32acd6977: Pull complete

cf006e61e0b6: Pull complete

a9425533f3f3: Pull complete

Digest: sha256:f4be4f53677e009df3db81f3f6a98908040968bd9a27bdfdf936c651d78e0319

Status: Downloaded newer image for elasticsearch:6.8.4

docker.io/library/elasticsearch:6.8.4

[root@hosystem ~]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

redis               latest              62f1d3402b78        5 days ago          104MB

rabbitmq            3-management        68898be27496        4 weeks ago         186MB

rabbitmq            latest              ea2bf0a30abf        4 weeks ago         156MB

hello-world         latest              bf756fb1ae65        10 months ago       13.3kB

elasticsearch       6.8.4               25476914cc66        12 months ago       955MB

注:若出现manifest for elasticsearch:latest not found: manifest unknown: manifest unknown问题;

只需要指定版本号即可 elasticsearch:latest

(2).启动ElasticSearch

  启动ElasticSearch的时候我们需要指定内存大小,否则会出现错误.

  由于elasticsearch默认分配jvm空间大小为2g,内存不足分配导致错误.max virtual memory areas vm.max_count(65530) is too low...

[root@hosystem ~]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

redis               latest              62f1d3402b78        5 days ago          104MB

rabbitmq            3-management        68898be27496        4 weeks ago         186MB

rabbitmq            latest              ea2bf0a30abf        4 weeks ago         156MB

hello-world         latest              bf756fb1ae65        10 months ago       13.3kB

elasticsearch       6.8.4               25476914cc66        12 months ago       955MB

[root@hosystem ~]# docker run -e  ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name ES01 25476914cc66

6c91eee08c02a2c3eeda3264d215c73678518881011dc494c121dc4fb658ed06

[root@hosystem ~]# docker ps

CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                                                                                         NAMES

6c91eee08c02        25476914cc66            "/usr/local/bin/dock…"   10 seconds ago      Up 7 seconds        0.0.0.0:9200->9200/tcp,0.0.0.0:9300->9300/tcp                                                                ES01

(3).访问ElasticSearch管理界面

[1].防火墙设置

  如果访问出现我们需要检查下是否配置成功,启动是否成功。还有就是防火墙是否已经配置可允许通过9200端口.

[root@hosystem ~]# firewall-cmd --zone=public --add-port=9200/tcp --permanent

 

[2].vm.max_map_count

[root@hosystem ~]# docker ps -a

CONTAINER ID        IMAGE                   COMMAND                  CREATED              STATUS                       PORTS                                                                                                         NAMES

7ed1a0faa39a        25476914cc66            "/usr/local/bin/dock…"   About a minute ago   Exited (78) 55 seconds ago                                                                                                                 ES01

[root@hosystem ~]# docker logs -f -t --tail 10 7ed1a0faa39a

#内存不足 https://blog.csdn.net/qq_34756221/article/details/105550037

2020-11-02T14:58:05.423337218Z [1]: max virtual memory areas vm.max_map_count [65530] is too low,increase to at least [262144]

2020-11-02T14:58:05.502461403Z [2020-11-02T14:58:05,497][INFO ][o.e.n.Node               ] [5KFPGEX] closed

2020-11-02T14:58:05.506628526Z [2020-11-02T14:58:05,506][INFO ][o.e.x.m.p.NativeController] [5KFPGEX] Native controller process has stopped - no new native processes can be started

 

4.ElasticSearch使用

  官方文档:https://www.elastic.co/guide/index.html

(1).下载postmanCanary

(2).创建数据

  通过postman的put请求增加员工数据

 

 

PUT /megacorp/employee/1

{

    "first_name" : "John",

    "last_name" :  "Smith",

    "age" :        25,

    "about" :      "I love to go rock climbing",

    "interests": [ "sports","music" ]

}

 

PUT /megacorp/employee/2

{

    "first_name" :  "Jane",

    "last_name" :   "Smith",

    "age" :         32,

    "about" :       "I like to collect rock albums",

    "interests":  [ "music" ]

}

 

PUT /megacorp/employee/3

{

    "first_name" :  "Douglas",

    "last_name" :   "Fir",

    "age" :         35,

    "about":        "I like to build cabinets",

    "interests":  [ "forestry" ]

}

(3).检索文档

 

   HTTP 命令由 PUT 改为 GET 可以用来检索文档,同样的,可以使用 DELETE 命令来删除文档,以及使用 HEAD 指令来检查文档是否存在。如果想更新已存在的文档,只需再次 PUT .

[1].获取员工

  使用GET请求

 

[2].检验员工是否存在

  使用HEAD请求

 

(4).轻量搜索

[1].搜索所有雇员

GET /megacorp/employee/_search

 

[2].搜索姓氏为Smith的雇员

GET /megacorp/employee/_search?q=last_name:Smith

 

(5).查询表达式

 

参考文档:

https://www.elastic.co/guide/index.html

https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原理介绍,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。传统事务中回滚点的使...
今天小编给大家分享的是一文解析spring中事务的传播机制,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区别,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。Spring Cloud Netfli...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。第一步:整合pom文件,在S...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。List 坑列表 = new ArrayList(2);...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓存的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇...
本篇内容主要讲解“Spring中的@Autowired和@Resource注解怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学...
今天小编给大家分享一下SpringSecurity怎么定义多个过滤器链的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家
这篇文章主要介绍“Spring的@Conditional注解怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring的@Con...
这篇文章主要介绍了SpringCloudGateway的熔断限流怎么配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringCloud&nb...
今天小编给大家分享一下怎么使用Spring解决循环依赖问题的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考
这篇文章主要介绍“Spring事务及传播机制的原理及应用方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Sp...
这篇“SpringCloudAlibaba框架实例应用分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价
本篇内容主要讲解“SpringBoot中怎么使用SpringMVC”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习...
这篇文章主要介绍“SpringMVC适配器模式作用范围是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringMVC
这篇“导入SpringCloud依赖失败如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家...
这篇文章主要讲解了“SpringMVC核心DispatcherServlet处理流程是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来
今天小编给大家分享一下SpringMVCHttpMessageConverter消息转换器怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以...
这篇文章主要介绍“Spring框架实现依赖注入的原理是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring框架...
本篇内容介绍了“Spring单元测试控制Bean注入的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下