欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot整合ElasticSearch實(shí)踐

 更新時(shí)間:2017年05月20日 16:23:52   作者:田守枝  
本篇文章主要介紹了SpringBoot整合ElasticSearch實(shí)踐,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧

本節(jié)我們基于一個(gè)發(fā)表文章的案例來(lái)說明SpringBoot如何elasticsearch集成。elasticsearch本身可以是一個(gè)獨(dú)立的服務(wù),也可以嵌入我們的web應(yīng)用中,在本案例中,我們講解如何將elasticsearch嵌入我們的應(yīng)用中。

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

一、實(shí)體設(shè)計(jì):

Tutorial.java

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

Author.java

public class Author implements Serializable{
 /**
 * 作者id
 */
 private Long id;
 /**
 * 作者姓名
 */
 private String name;
 /**
 * 作者簡(jiǎn)介
 */
 private String remark;
 
 //setters and getters
 //toString
 
}

Article.java

public class Article implements Serializable{
 private Long id;
 /**標(biāo)題*/
 private String title;
 /**摘要*/
 private String abstracts;
 /**內(nèi)容*/
 private String content;
 /**發(fā)表時(shí)間*/
 private Date postTime;
 /**點(diǎn)擊率*/
 private Long clickCount;
 /**作者*/
 private Author author;
 /**所屬教程*/
 private Tutorial tutorial;
 
 //setters and getters
 //toString
}

二、整合SpringBoot與ElasticSearch

1、引入相應(yīng)的依賴

pom.xml

<parent>
 <groupId> org.springframework.boot </groupId>
 <artifactId> spring-boot-starter-parent </artifactId>
 <version> 1.3.0.RELEASE </version>
 </parent>
 
 <dependencies>
     <!-- 添加 web 應(yīng)用的依賴 -->
 <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>

2、修改配置文件

application.yml

spring:
  data:
    elasticsearch: 
      cluster-name: #默認(rèn)為elasticsearch
      cluster-nodes: #配置es節(jié)點(diǎn)信息,逗號(hào)分隔,如果沒有指定,則啟動(dòng)ClientNode
      properties:
        path:
         logs: ./elasticsearch/log #elasticsearch日志存儲(chǔ)目錄
         data: ./elasticsearch/data #elasticsearch數(shù)據(jù)存儲(chǔ)目錄

這些配置的屬性,最終會(huì)設(shè)置到ElasticsearchProperties這個(gè)實(shí)體中。

3、為實(shí)體添加ElascticSearch的注解

Spring-data-elasticSearch提供了一些注解來(lái)幫助我們快速針對(duì)實(shí)體建立索引。

因?yàn)槲覀兿M鸄rticle作為我們文章的搜索入口,所以我們?cè)贏rticle類上添加@Document注解。

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

默認(rèn)情況下,添加@Document注解會(huì)對(duì)實(shí)體中的所有屬性建立索引,由于本教程是講解如何整合,并不是專門講解ElasticSearch,故對(duì)于其他注解不再講解。

4、建立搜索類

我們只要編寫一個(gè)接口ArticleSearchRepository,來(lái)繼承Spring-data-elasticSearch提供的ElasticsearchRepository即可。

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
 
import com.tianshouzhi.springbootstudy.domain.Article;
//泛型的參數(shù)分別是實(shí)體類型和主鍵類型
public interface ArticleSearchRepository extends ElasticsearchRepository<Article, Long>{
 
}

5、單元測(cè)試

5.1、創(chuàng)建索引

@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);
 }
 
}

運(yùn)行單元測(cè)試,項(xiàng)目根目錄下出現(xiàn):

說明我們索引已經(jīng)創(chuàng)建成功。

5.2測(cè)試搜索:

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

運(yùn)行單元測(cè)試,控制臺(tái)輸出

復(fù)制代碼 代碼如下:

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]]

說明搜索成功。讀者可以嘗試其他的搜索關(guān)鍵字進(jìn)行搜索。

 說明:以上方式是SpringBoot與ElasticSearch進(jìn)行本地整合,即將ElasticSearch內(nèi)嵌在應(yīng)用,如果我們搭建了ElasticSearch集群,只需要將配置改為如下配置即可:

spring:
  data:
    elasticsearch: 
      cluster-nodes:115.28.65.149:9300 #配置es節(jié)點(diǎn)信息,逗號(hào)分隔,如果沒有指定,則啟動(dòng)ClientNode

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺析java 10中的var關(guān)鍵字用法

    淺析java 10中的var關(guān)鍵字用法

    2018年3月20日,Oracle發(fā)布java10。java10為java帶來(lái)了很多新特性。這篇文章主要介紹了Java 10 var關(guān)鍵字詳解和示例教程,需要的朋友可以參考下
    2018-10-10
  • Spring HandlerInterceptor實(shí)現(xiàn)原理代碼解析

    Spring HandlerInterceptor實(shí)現(xiàn)原理代碼解析

    這篇文章主要介紹了Spring HandlerInterceptor實(shí)現(xiàn)原理代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • MyBatis控制臺(tái)顯示SQL語(yǔ)句的方法實(shí)現(xiàn)

    MyBatis控制臺(tái)顯示SQL語(yǔ)句的方法實(shí)現(xiàn)

    這篇文章主要介紹了MyBatis控制臺(tái)顯示SQL語(yǔ)句的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • SpringBoot詳解自定義Stater的應(yīng)用

    SpringBoot詳解自定義Stater的應(yīng)用

    Springboot的出現(xiàn)極大的簡(jiǎn)化了開發(fā)人員的配置,而這之中的一大利器便是springboot的starter,starter是springboot的核心組成部分,springboot官方同時(shí)也為開發(fā)人員封裝了各種各樣方便好用的starter模塊
    2022-07-07
  • Java手動(dòng)創(chuàng)建線程池代碼實(shí)例

    Java手動(dòng)創(chuàng)建線程池代碼實(shí)例

    這篇文章主要介紹了Java手動(dòng)創(chuàng)建線程池代碼實(shí)例,FixedThreadPool或者SingleThreadPool,允許的請(qǐng)求隊(duì)列長(zhǎng)度為Integer.MAX_VALUE,可能會(huì)堆積大量的請(qǐng)求,從而導(dǎo)致OOM,需要的朋友可以參考下
    2023-12-12
  • Java畢業(yè)設(shè)計(jì)之多用戶宿舍管理系統(tǒng)的實(shí)現(xiàn)

    Java畢業(yè)設(shè)計(jì)之多用戶宿舍管理系統(tǒng)的實(shí)現(xiàn)

    這篇文章主要介紹了基于Java實(shí)現(xiàn)的多用戶宿舍管理系統(tǒng),本文采用了jsp、servlet、jdbc等技術(shù),文中示例代碼講解詳細(xì),需要的可以參考一下
    2022-02-02
  • Java中ArrayList和LinkedList之間的區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java中ArrayList和LinkedList之間的區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了Java中ArrayList和LinkedList之間的區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Spring Boot中使用RSocket的示例代碼

    Spring Boot中使用RSocket的示例代碼

    這篇文章主要介紹了Spring Boot中使用RSocket的示例代碼,特別是spring boot 如何幫助抽象出更低級(jí)別的RSocket API,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Spring中Cache的使用方法詳解

    Spring中Cache的使用方法詳解

    這篇文章主要介紹了Spring中Cache的使用方法詳解,Spring Cache 是一個(gè)框架,實(shí)現(xiàn)了基于注解的緩存功能,只需要簡(jiǎn)單地加一個(gè)注解,就能實(shí)現(xiàn)緩存功能,Spring Cache 提供了一層抽象,底層可以切換不同的緩存實(shí)現(xiàn),需要的朋友可以參考下
    2024-01-01
  • Java如何實(shí)現(xiàn)讀取txt文件內(nèi)容并生成Word文檔

    Java如何實(shí)現(xiàn)讀取txt文件內(nèi)容并生成Word文檔

    本文主要介紹了通過Java實(shí)現(xiàn)讀取txt文件中的內(nèi)容,并將內(nèi)容生成Word文檔。文章的代碼非常詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2021-12-12

最新評(píng)論