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

SpringBoot2.x学习笔记十四:搜索引擎ElasticSearch5.6.x

1.SpringBoot2.x学习笔记十四:搜索引擎ElasticSearch5.6.x文章目录1.SpringBoot2.x学习笔记十四:搜索引擎El

1. SpringBoot2.x学习笔记十四:搜索引擎ElasticSearch5.6.x


文章目录

      • 1. SpringBoot2.x学习笔记十四:搜索引擎ElasticSearch5.6.x
        • 1.1. ElasticSearch搜索引擎的介绍
        • 1.2. SpringBoot2.x整合ElasticSearch5.6x


1.1. ElasticSearch搜索引擎的介绍


  1. 如果要检索数据库中的某些东西,对于mysql一般采用mysql的like语句进行模糊查询。
  2. 但是like进行查询对数据量不是大的还可以,数据库的like查询有性能问题,并且like语句无法做索引。
  3. 常用的搜索框架

1、solar

2、ElasticSearch(github,维基百科,stackOverflow网站)

这两个搜索框架底层都是由lucene写的。solar针对数据量不是特别大的企业服务,ElasticSearch针对数据量特别大的互联网企业。



  1. ElasticSearch的特点(纯java开发)

1、全文搜索,结构化搜索,数据统计、分析,接近实时处理,分布式搜索,处理PB级别的数据搜索纠错,自动完成。

使用场景:日志搜索,数据聚合,数据监控,报表统计分析。



  1. 注意

ES6.x不再支持一个索引库里面多个type,6.x里面已经禁止一个index里面多个type,所以一个index索引库只能存在1个type.

mysql : database : table : record(上下相对应)

ES6.x : index : type(只能存在一个) : document


ElasticSearch官方学习文档


  1. 查看集群状态

localhost:9200/_cat/health?v

  1. 查看服务器负载情况

localhost:9200/_cat/nodes?v

  1. 查看索引

localhost:9200/_cat/indices?v //get提交

  1. 创建索引

localhost:9200/customer?pretty //put提交

1.2. SpringBoot2.x整合ElasticSearch5.6x


  1. springData整合ElasticSearch

springData是springBoot用于整合各种框架的中间件,封装了整合各种框架的API



  1. application配置ES

spring.data.elasticsearch.cluster-name=elasticsearch
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
spring.data.elasticsearch.repositories.enabled=true

  1. 创建domain对象

private static final long serialVersionUID=1L;
private long id;
private String title;
private String summary;
private String content;
private int pv;
public long getId() {return id;
}
public void setId(long id) {this.id = id;
}
public String getTitle() {return title;
}
public void setTitle(String title) {this.title = title;
}
public String getSummary() {return summary;
}
public void setSummary(String summary) {this.summary = summary;
}
public String getContent() {return content;
}
public void setContent(String content) {this.content = content;
}
public int getPv() {return pv;
}
public void setPv(int pv) {this.pv = pv;
}
public static long getSerialversionuid() {return serialVersionUID;
}

  1. 创建接口类似于操作数据库的dao层,该接口封装了crud操作

@Component
//@Repository,这个注解类似于Component
public interface ArticleRepository extends ElasticsearchRepository<Article,Long>{}

  1. 接口:存储和查询

&#64;Autowiredprivate ArticleRepository articleRepository;&#64;GetMapping("save")public Object save() {Article article&#61;new Article();article.setId(2L);article.setContent("this is 内容");article.setPv(888);article.setTitle("I love you");article.setSummary("概要搜索");articleRepository.save(article);return JsonData.buildSuccess();}&#64;GetMapping("search")public Object search(String title) {QueryBuilder queryBuilder&#61;QueryBuilders.matchQuery("title", title);Iterable<Article> list&#61;articleRepository.search(queryBuilder);return JsonData.buildSuccess(list);}

QueryBuilder是ES封装的查询接口。

我们会发现在ElasticSearch启动时&#xff0c;会占用两个端口9200和9300。
他们具体的作用如下&#xff1a;

9200 是ES节点与外部通讯使用的端口。它是http协议的RESTful接口&#xff08;各种CRUD操作都是走的该端口,如查询&#xff1a;http://localhost:9200/user/_search&#xff09;。
9300是ES节点之间通讯使用的端口。它是tcp通讯端口&#xff0c;集群间和TCPclient都走的它。&#xff08;java程序中使用ES时&#xff0c;在配置文件中要配置该端口&#xff09;



推荐阅读
  • 提升Android开发效率:Clean Code的最佳实践与应用
    在Android开发中,提高代码质量和开发效率是至关重要的。本文介绍了如何通过Clean Code的最佳实践来优化Android应用的开发流程。以SQLite数据库操作为例,详细探讨了如何编写高效、可维护的SQL查询语句,并将其结果封装为Java对象。通过遵循这些最佳实践,开发者可以显著提升代码的可读性和可维护性,从而加快开发速度并减少错误。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文介绍了在 Spring Boot 中使用 JPA 进行数据删除操作时遇到的 SQL 错误及其解决方法。错误表现为:删除操作失败,原因是无法打开 JPA EntityManager 以进行事务处理。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • 在深入掌握Spring框架的事务管理之前,了解其背后的数据库事务基础至关重要。Spring的事务管理功能虽然强大且灵活,但其核心依赖于数据库自身的事务处理机制。因此,熟悉数据库事务的基本概念和特性是必不可少的。这包括事务的ACID属性、隔离级别以及常见的事务管理策略等。通过这些基础知识的学习,可以更好地理解和应用Spring中的事务管理配置。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 在当今的软件开发领域,分布式技术已成为程序员不可或缺的核心技能之一,尤其在面试中更是考察的重点。无论是小微企业还是大型企业,掌握分布式技术对于提升工作效率和解决实际问题都至关重要。本周的Java架构师实战训练营中,我们深入探讨了Kafka这一高效的分布式消息系统,它不仅支持发布订阅模式,还能在高并发场景下保持高性能和高可靠性。通过实际案例和代码演练,学员们对Kafka的应用有了更加深刻的理解。 ... [详细]
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社区 版权所有