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

SpringBoot整合ElasticSearch實踐

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

本節(jié)我們基于一個發(fā)表文章的案例來說明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
}

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;
 /**標題*/
 private String title;
 /**摘要*/
 private String abstracts;
 /**內(nèi)容*/
 private String content;
 /**發(fā)表時間*/
 private Date postTime;
 /**點擊率*/
 private Long clickCount;
 /**作者*/
 private Author author;
 /**所屬教程*/
 private Tutorial tutorial;
 
 //setters and getters
 //toString
}

二、整合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>

2、修改配置文件

application.yml

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

這些配置的屬性,最終會設置到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{
....
}

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

4、建立搜索類

我們只要編寫一個接口ArticleSearchRepository,來繼承Spring-data-elasticSearch提供的ElasticsearchRepository即可。

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
 
import com.tianshouzhi.springbootstudy.domain.Article;
//泛型的參數(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);
 }
 
}

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

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

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

運行單元測試,控制臺輸出

復制代碼 代碼如下:

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

說明搜索成功。讀者可以嘗試其他的搜索關鍵字進行搜索。

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

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

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

相關文章

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

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

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

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

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

    Spring IO Platform簡單介紹

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

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

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

    MybatisPlus自動填充時間的配置類實現(xiàn)

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

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

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

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

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

    Java報錯Java.text.ParseException的解決方法匯總

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

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

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

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

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

最新評論

新安县| 靖西县| 高要市| 枣庄市| 政和县| 贵德县| 三门县| 隆昌县| 婺源县| 张掖市| 运城市| 庆安县| 河西区| 林芝县| 德安县| 白沙| 土默特右旗| 庆阳市| 金阳县| 六盘水市| 新安县| 吉木萨尔县| 绍兴县| 伊金霍洛旗| 红河县| 保靖县| 濉溪县| 馆陶县| 曲松县| 天等县| 同江市| 浠水县| 平原县| 镇沅| 旬阳县| 绵阳市| 尤溪县| 云安县| 元氏县| 吉首市| 教育|