热门标签 | 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. 测试

推荐阅读
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文详细介绍了跨站脚本攻击(XSS)的基本概念、工作原理,并通过实际案例演示如何构建XSS漏洞的测试环境,以及探讨了XSS攻击的不同形式和防御策略。 ... [详细]
  • RabbitMQ 核心组件解析
    本文详细介绍了RabbitMQ的核心概念,包括其基本原理、应用场景及关键组件,如消息、生产者、消费者、信道、交换机、路由键和虚拟主机等。 ... [详细]
  • 利用Cookie实现用户登录状态的持久化
    本文探讨了如何使用Cookie技术在Web应用中实现用户登录状态的持久化,包括Cookie的基本概念、优势及主要操作方法,并通过一个简单的Java Web项目示例展示了具体实现过程。 ... [详细]
  • 探索OpenWrt中的LuCI框架
    本文深入探讨了OpenWrt系统中轻量级HTTP服务器uhttpd的工作原理及其配置,重点介绍了LuCI界面的实现机制。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文探讨了在使用 MyBatis 进行批量数据处理时遇到的参数绑定异常问题,并提供了详细的解决方案。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 第1章选择流程控制语句1.1顺序结构的基本使用1.1.1顺序结构概述是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行 ... [详细]
  • 本文介绍了基于Java的在线办公工作流系统的毕业设计方案,涵盖了MyBatis框架的应用、源代码分析、调试与部署流程、数据库设计以及相关论文撰写指导。 ... [详细]
  • Git版本控制基础解析
    本文探讨了Git作为版本控制工具的基本概念及其重要性,不仅限于代码管理,还包括文件的历史记录与版本切换功能。通过对比Git与SVN,进一步阐述了分布式版本控制系统的独特优势。 ... [详细]
  • LoadRunner中的IP欺骗配置与实践
    为了确保服务器能够有效地区分不同的用户请求,避免多人使用同一IP地址造成的访问限制,可以通过配置IP欺骗来解决这一问题。本文将详细介绍IP欺骗的工作原理及其在LoadRunner中的具体配置步骤。 ... [详细]
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社区 版权所有