springboot-elasticsearch搜索引擎安装及使用

一、介绍

  1. 简介
      ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
      Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
      ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET (C#)、PHP、Python、Apache Groovy、Ruby 和许多其他语言中都是可用的。
      根据DB-Engines的排名显示,Elasticsearch是 最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
  2. elasticSearch特点和使用场景
    1、 全文检索,结构化检索,数据统计、分析,接近实时处理,分布式搜索(可部署数百台服务器),处理TB、PB级别的数据搜索纠错等;
    2、 使用场景:日志搜索,数据聚合,数据监控,报表统计分析;
    3、 国内使用:维基百科,Stack Overflow, GitHub。

二、安装

  1. 官方文档
  2. 在window下的安装
    下载7.6版本 ,直接加压到非中文硬盘。D:\Program Files\elasticsearch-7.6.0\bin双击elasticsearch.bat 启动es7.6。 会提示需安装JDK11, 下载安装JDK11即可。
  3. 启动后,浏览器输入:localhost:9200 看到如下信息代表成功。信息见备注
  4. 一般情况下,我们都会通过一个可视化的工具来查看ES的运行状态和数据。这个工具我们一般选择head 。
    该插件依赖notejs ,下载地址:notejs下载地址 安装很简单,一路下一步。
    nodejs安装完毕后,cmd输入:node --version 能看到版本信息,代表安装成功。
  5. 进入nodejs安装目录在这里插入图片描述
  6. 以上所有head的依赖都安装完毕,下面安装head
    head下载地址
  7. 解压到非中文路径,然后cmd进入该路径,通过命令行安装:npm install 执行安装,此安装过程非常缓慢。
    启动命令:
    npm run start 
    
  8. 启动后,在浏览器输入:http://localhost:9100/
  9. 发现连接状态未连接,因为es默认不允许跨域访问,需手动开启,比如路径:
    D:\Program Files\elasticsearch-7.6.0\config
    用文本编辑器打开elasticsearch.yml
    注意: 添加一下内容时,要注意 冒号后面的 的前后要有空格
    在这里插入图片描述
  10. 重启es 刷新elasticsearch-head
  11. 如果重启es 发现闪退,需修改es安装包下:/config/jvm.options可以将JVM参数改小
    -Xms512M
    -Xmx512M
    

三、ElasticSearch简单测试

  1. 参考文档
  2. 集群运行状况
  3. 测试接口
    查看集群状态:localhost:9200/_cat/health?v
    查看索引列表:localhost:9200/_cat/indices?v
  4. 创建索引参考文档
    创建索引接口:localhost:9200/customer?pretty 提交方式是put
  5. 再次查看索引,可以看到内容:localhost:9200/_cat/indices?v
    在这里插入图片描述
    6. 索引中存放数据参考文档
    向索引中添加数据:put提交,提交参数为json数据,需选择Body–raw–json,否则提交报错406
    在这里插入图片描述
  6. 通过get提交查看刚才添加到索引的数据。
    localhost:9200/customer/external/1?pretty

四、整合elasticsearch

  1. spring-data-elasticsearch介绍
  2. idea搭建springboot工程
  3. application.properties 配置
    参考文档
  4. 实体类配置
    在这里插入图片描述
    /**
     * 用户实体类
     */
    @Document(indexName = "user",type = "info")
    public class User {
    
        private Integer id;
        private String name;
        private Integer age;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    
    
  5. dao层
    继承ElasticsearchRepository
    /**
     * user的持久层,继承了ElasticsearchRepository
     */
    @Repository
    public interface UserRepository extends ElasticsearchRepository<User,Integer> {
    }
    
  6. controller层
    使用了一个工具类JsonData,转成json字符串
    @RestController
    @RequestMapping("/user/info")
    public class UserController {
    
        @Autowired
        private UserRepository repository;
    
        //1.保存数据到索引
        @GetMapping("/save")
        public Object save(){
            User user = new User();
            user.setId(2);
            user.setName("张三");
            user.setAge(21);
            repository.save(user);
            return JsonData.buildSuccess();
        }
    
        //2.从索引检索数据
        @GetMapping("/search")
        public Object search(String name){
            QueryBuilder builder = QueryBuilders.matchQuery("name",name);
            Iterable<User> list = repository.search(builder);
    
            return JsonData.buildSuccess(list);
        }
    }
    
  7. 测试
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值