热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springbootelasticsearch搜索引擎安装及使用

一、介绍简介ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。Elas

一、介绍

  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&#xff0c;转成json字符串

    &#64;RestController
    &#64;RequestMapping("/user/info")
    public class UserController {&#64;Autowiredprivate UserRepository repository;//1.保存数据到索引&#64;GetMapping("/save")public Object save(){User user &#61; new User();user.setId(2);user.setName("张三");user.setAge(21);repository.save(user);return JsonData.buildSuccess();}//2.从索引检索数据&#64;GetMapping("/search")public Object search(String name){QueryBuilder builder &#61; QueryBuilders.matchQuery("name",name);Iterable<User> list &#61; repository.search(builder);return JsonData.buildSuccess(list);}
    }

  7. 测试

推荐阅读
author-avatar
百花一枝梅
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有