最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot整合ElasticSearch實(shí)踐

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

本節(jié)我們基于一個(gè)發(fā)表文章的案例來說明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;
 /**
 * 作者簡介
 */
 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提供了一些注解來幫助我們快速針對(duì)實(shí)體建立索引。

因?yàn)槲覀兿M鸄rticle作為我們文章的搜索入口,所以我們在Article類上添加@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,來繼承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、單元測試

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)行單元測試,項(xiàng)目根目錄下出現(xiàn):

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

5.2測試搜索:

@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)行單元測試,控制臺(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

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

相關(guān)文章

  • Spring session 獲取當(dāng)前賬戶登錄數(shù)的實(shí)例代碼

    Spring session 獲取當(dāng)前賬戶登錄數(shù)的實(shí)例代碼

    這篇文章主要介紹了Spring session 獲取當(dāng)前賬戶登錄數(shù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Java中@DS+@Transactional注解切換數(shù)據(jù)源失效解決方案

    Java中@DS+@Transactional注解切換數(shù)據(jù)源失效解決方案

    本文主要介紹了@DS+@Transactional注解切換數(shù)據(jù)源失效解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Spring IO Platform簡單介紹

    Spring IO Platform簡單介紹

    這篇文章主要介紹了Spring IO Platform簡單介紹,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • Spring?Security權(quán)限管理小結(jié)

    Spring?Security權(quán)限管理小結(jié)

    SpringSecurity是一個(gè)權(quán)限管理框架,核心是認(rèn)證和授權(quán),前面已經(jīng)系統(tǒng)的給大家介紹過了認(rèn)證的實(shí)現(xiàn)和源碼分析,本文重點(diǎn)來介紹下權(quán)限管理,需要的朋友可以參考下
    2022-08-08
  • MybatisPlus自動(dòng)填充時(shí)間的配置類實(shí)現(xiàn)

    MybatisPlus自動(dòng)填充時(shí)間的配置類實(shí)現(xiàn)

    本文介紹了如何在MyBatis-Plus中實(shí)現(xiàn)自動(dòng)填充時(shí)間的功能,通過實(shí)現(xiàn)MetaObjectHandler接口,重寫insertFill()和updateFill()方法,分別在插入和更新時(shí)填充創(chuàng)建時(shí)間和更新時(shí)間,感興趣的可以了解一下
    2024-12-12
  • Java 把json對(duì)象轉(zhuǎn)成map鍵值對(duì)的方法

    Java 把json對(duì)象轉(zhuǎn)成map鍵值對(duì)的方法

    這篇文章主要介紹了java 把json對(duì)象中轉(zhuǎn)成map鍵值對(duì)的方法,本文的目的是把json串轉(zhuǎn)成map鍵值對(duì)存儲(chǔ),而且只存儲(chǔ)葉節(jié)點(diǎn)的數(shù)據(jù) 。需要的朋友可以參考下
    2018-04-04
  • Maven安裝和配置阿里云鏡像(解決加載慢)

    Maven安裝和配置阿里云鏡像(解決加載慢)

    本文介紹了Maven中配置阿里云鏡像以解決依賴加載慢的問題,包括安裝Maven、配置環(huán)境變量、在IDEA中配置Maven等內(nèi)容,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • Java報(bào)錯(cuò)Java.text.ParseException的解決方法匯總

    Java報(bào)錯(cuò)Java.text.ParseException的解決方法匯總

    在Java開發(fā)的復(fù)雜世界中,錯(cuò)誤處理是開發(fā)者必須面對(duì)的關(guān)鍵挑戰(zhàn)之一,其中,Java.text.ParseException就像一個(gè)隱藏在代碼叢林中的陷阱,常常讓開發(fā)者們陷入困惑,本文給大家介紹了Java報(bào)錯(cuò)Java.text.ParseException的解決方法,需要的朋友可以參考下
    2024-10-10
  • Java多線程基礎(chǔ) 線程的等待與喚醒(wait、notify、notifyAll)

    Java多線程基礎(chǔ) 線程的等待與喚醒(wait、notify、notifyAll)

    這篇文章主要介紹了Java多線程基礎(chǔ) 線程的等待與喚醒,需要的朋友可以參考下
    2017-05-05
  • Java中HashMap獲取值的幾種方式匯總

    Java中HashMap獲取值的幾種方式匯總

    這篇文章主要介紹了Java中HashMap獲取值的幾種方式匯總,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評(píng)論

新绛县| 西乌珠穆沁旗| 阳西县| 苗栗市| 砚山县| 莱西市| 通河县| 和龙市| 治多县| 临泽县| 沭阳县| 东莞市| 高雄市| 七台河市| 西畴县| 华亭县| 河北省| 临海市| 乐平市| 淮北市| 蒙阴县| 乌鲁木齐市| 巨野县| 如皋市| 左云县| 平度市| 长沙县| 常山县| 蒙阴县| 松滋市| 庄浪县| 高唐县| 枣强县| 雅江县| 布尔津县| 铜鼓县| 开江县| 星座| 堆龙德庆县| 三原县| 宁晋县|