• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > SpringBoot整合ElasticSearch实践

SpringBoot整合ElasticSearch实践

作者:田守枝 字体:[增加 减小] 来源:互联网 时间:2017-05-28

田守枝 通过本文主要向大家介绍了springboot整合redis,springboot整合shiro,springboot整合docker,springboot整合dubbo,springboot整合jpa等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本节我们基于一个发表文章的案例来说明SpringBoot如何elasticsearch集成。elasticsearch本身可以是一个独立的服务,也可以嵌入我们的web应用中,在本案例中,我们讲解如何将elasticsearch嵌入我们的应用中。

案例背景:每个文章(Article)都要属于一个教程(Tutorial),而且每个文章都要有一个作者(Author)。

一、实体设计:

Tutorial.java

public class Tutorial implements Serializable{
 private Long id;
 private String name;//教程名称
 
 //setters and getters
 //toString
}
</div>

Author.java

public class Author implements Serializable{
 /**
 * 作者id
 */
 private Long id;
 /**
 * 作者姓名
 */
 private String name;
 /**
 * 作者简介
 */
 private String remark;
 
 //setters and getters
 //toString
 
}
</div>

Article.java

public class Article implements Serializable{
 private Long id;
 /**标题*/
 private String title;
 /**摘要*/
 private String abstracts;
 /**内容*/
 private String content;
 /**发表时间*/
 private Date postTime;
 /**点击率*/
 private Long clickCount;
 /**作者*/
 private Author author;
 /**所属教程*/
 private Tutorial tutorial;
 
 //setters and getters
 //toString
}
</div>

二、整合SpringBoot与ElasticSearch

1、引入相应的依赖

pom.xml

<parent>
 <groupId> org.springframework.boot </groupId>
 <artifactId> spring-boot-starter-parent </artifactId>
 <version> 1.3.0.RELEASE </version>
 </parent>
 
 <dependencies>
     <!-- 添加 web 应用的依赖 -->
 <dependency>
  <groupId> org.springframework.boot </groupId>
  <artifactId> spring-boot-starter-web </artifactId>
 </dependency>
 <!-- 添加 spring-data-elasticsearch的依赖 -->
 <dependency>
  <groupId> org.springframework.boot </groupId>
  <artifactId> spring-boot-starter-data-elasticsearch </artifactId>
 </dependency>
 <dependency>
  <groupId> org.springframework.boot</groupId>
  <artifactId> spring-boot-starter-test </artifactId>
 </dependency>
 </dependencies>
</div>

2、修改配置文件

application.yml

spring:
  data:
    elasticsearch: 
      cluster-name: #默认为elasticsearch
      cluster-nodes: #配置es节点信息,逗号分隔,如果没有指定,则启动ClientNode
      properties:
        path:
         logs: ./elasticsearch/log #elasticsearch日志存储目录
         data: ./elasticsearch/data #elasticsearch数据存储目录
</div>

这些配置的属性,最终会设置到ElasticsearchProperties这个实体中。

3、为实体添加ElascticSearch的注解

Spring-data-elasticSearch提供了一些注解来帮助我们快速针对实体建立索引。

因为我们希望Article作为我们文章的搜索入口,所以我们在Article类上添加@Document注解。

@Document(indexName="projectname",type="article",indexStoreType="fs",shards=5,replicas=1,refreshInterval="-1")
public class Article implements Serializable{
....
}
</div>

默认情况下,添加@Document注解会对实体中的所有属性建立索引,由于本教程是讲解如何整合,并不是专门讲解ElasticSearch,故对于其他注解不再讲解。

4、建立搜索类

我们只要编写一个接口ArticleSearchRepository,来继承Spring-data-elasticSearch提供的ElasticsearchRepository即可。

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
 
import com.tianshouzhi.springbootstudy.domain.Article;
//泛型的参数分别是实体类型和主键类型
public interface ArticleSearchRepository extends ElasticsearchRepository<Article, Long>{
 
}
</div>

5、单元测试

5.1、创建索引

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public class ElasticSearchTest {
 
 @Autowired
 private ArticleSearchRepository articleSearchRepository;
 @Test
 public void testSaveArticleIndex(){
 Author author=new Author();
 author.setId(1L);
 author.setName("tianshouzhi");
 author.setRemark("java developer");
 
 Tutorial tutorial=new Tutorial();
 tutorial.setId(1L);
 tutorial.setName("elastic search");
 
 Article article =new Article();
 article.setId(1L);
 article.setTitle("springboot integreate elasticsearch");
 article.setAbstracts("springboot integreate elasticsearch is very easy");
 article.setTutorial(tutorial);
 article.setAuthor(author);
 article.setContent("elasticsearch based on lucene,"
  + "spring-data-elastichsearch based on elaticsearch"
  + ",this tutorial tell you how to integrete springboot with spring-data-elasticsearch");
 article.setPostTime(new Date());
 article.setClickCount(1L);
 
 articleSearchRepository.save(article);
 }
 
}
</div>

运行单元测试,项目根目录下出现:

说明我们索引已经创建成功。

5.2测试搜索:

@Test
 public void testSearch(){
 String queryString="springboot";//搜索关键字
 QueryStringQueryBuilder builder=new QueryStringQueryBuilder(queryString);
 Iterable<Article> searchResult = articleSearchRepository.search(builder);
 Iterator<Article> iterator = searchResult.iterator();
 while(iterator.hasNext()){
  System.out.println(iterator.next());
 }
 }
</div>

运行单元测试,控制台输出

Article [id=1, title=springboot integreate elasticsearch, abstracts=springboot integreate elasticsearch is very easy, content=elasticsearch based on lucene,spring-data-elastichsearch based on elaticsearch,this tutorial tell you how to integrete springboot with spring-data-elasticsearch, postTime=Sun Feb 21 16:01:37 CST 2016, clickCount=1, author=Author [id=1, name=tianshouzhi, remark=java developer], tutorial=Tutorial [id=1, name=elastic search]]
</div>

说明搜索成功。读者可以尝试其他的搜索关键字进行搜索。

 说明:以上方式是SpringBoot与ElasticSearch进行本地整合,即将ElasticSearch内嵌在应用,如果我们搭建了ElasticSearch集群,只需要将配置改为如下配置即可:

spring:
  data:
    elasticsearch: 
      cluster-nodes:115.28.65.149:9300 #配置es节点信息,逗号分隔,如果没有指定,则启动ClientNode
</div>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • SpringBoot整合ElasticSearch实践
  • 详解springboot整合mongodb
  • springboot整合 beatlsql的实例代码
  • springboot整合spring-data-redis遇到的坑
  • SpringBoot远程访问redis服务器问题剖析
  • 详解springboot配置多个redis连接
  • SpringBoot整合ElasticSearch实践
  • 详解springboot整合mongodb
  • springboot整合 beatlsql的实例代码
  • springboot整合spring-data-redis遇到的坑

相关文章

  • 2017-05-28http协议进阶之Transfer-Encoding和HttpCore实现详解
  • 2017-05-28Java虚拟机工作原理
  • 2017-05-28Java IO流体系继承结构图_动力节点Java学院整理
  • 2017-05-28Spring Data JPA中的动态查询实例
  • 2017-08-27java 中StringBuffer中常用的方法
  • 2017-05-28ssm框架上传图片保存到本地和数据库示例
  • 2017-05-28关于多线程常用方法以及对锁的控制(详解)
  • 2017-05-28Java数据结构之散列表(动力节点Java学院整理)
  • 2017-05-28Java身份证验证方法实例详解
  • 2017-05-28SWT(JFace) Wizard(Eclipse插件编程必备)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • spring-boot整合dubbo:Spring-boot-dubbo-starter
    • 详解使用Spring3 实现用户登录以及权限认证
    • 老生常谈java路径中的反斜杠和斜杠的区别
    • Java正则验证电话,手机,邮箱,日期,金额的方法示例
    • Java Spring技术栈构建完整前后台团购网站
    • SpringBoot Mybatis Plus公共字段自动填充功能
    • List集合对象中按照不同属性大小排序的实例
    • springboot + swagger 实例代码
    • Java实现在正则表达式中控制大小写的方法
    • Java 加密解密基础分类及模式归纳整理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有