統合elasticsearchのSpringBoot

環境:

ES5.5

SpringBoot2.0.0

ばねデータelasticsearchを使用して統合的な実施形態

 

Mavenを増やします

< 依存性> 
            < のgroupId > org.springframework.boot </ のgroupId > 
            < たartifactId >ばねブートスタータデータelasticsearch </ たartifactId > 
</ 依存>

 

application.yml

スプリング:
    データ:
        elasticsearch:
          クラスタ名:インストールmy_clusterここ#esクラスタ名で設定
          192.168.111.129:9300#ESのノード構成情報、コンマで区切った複数のクラスタ・ノード

 

Entityクラス

インポートorg.springframework.data.annotation.Id;
 インポートorg.springframework.data.elasticsearch.annotations.Document;
 インポートしたjava.io.Serializable; 

/ ** 
 * INDEXNAME:データベースの名前に似たインデックス名
 *タイプ:類似したテーブル名を入力します
 * / 
@Document(INDEXNAME = "のZnS"、タイプ= "ブック" パブリック クラス予約実装シリアライズ{ 
    @Id 
    文字列ID、
    文字列名、
    文字列の作成者、

    パブリック文字列のgetId(){
         戻りID; 
    } 

    公共 ボイドSETID(文字列ID) {
         これ .ID =ID; 
    } 

    パブリック文字列のgetName(){
         戻り名。
    } 

    公共 ボイドのsetName(文字列名){
         この .nameの= 名前。
    } 

    パブリック文字列GETAUTHOR(){
         戻り著者。
    } 

    公共 ボイドSETAUTHOR(文字列の作成者){
         この .author = 著者。
    } 
}

 

DAO統合ElasticsearchRepository

輸入com.zns.search.server.entity.Book。
輸入org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
輸入org.springframework.stereotype.Component。

@Component 
パブリック インターフェイス BookRepositoryは延び ElasticsearchRepository <ブック、文字列> { 
   ブックqueryBookById(文字列ID)。
}

テスト

輸入com.zns.search.server.dao.BookRepository。
輸入com.zns.search.server.entity.Book。
輸入org.elasticsearch.index.query.QueryBuilders。
輸入org.springframework.beans.factory.annotation.Autowired;
輸入org.springframework.data.domain.Page。
輸入org.springframework.data.domain.PageRequest;
輸入org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder。
輸入org.springframework.data.elasticsearch.core.query.SearchQuery。
輸入org.springframework.web.bind.annotation.RequestMapping。
輸入org.springframework.web.bind.annotation.RestController。
輸入はjava.util.ArrayList;
輸入はjava.util.List; 

@RestController 
@RequestMapping( "/ブック" のパブリック クラスBookController { 

    @Autowired 
    プライベートBookRepository bookRepository。

    @RequestMapping( "/取得" 公衆ブック(取得){
         返す   bookRepository.queryBookById( "1" ); 
    } 

    (@RequestMapping "追加/" 公共 ボイドは(追加){
         ためint型私は++; iが= 100 <I = 1 ){ 
            ブックブック =新しいブック(); 
            book.setId(String.valueOf(I)); 
            book.setName( "名称" + String.valueOf(I)); 
            book.setAuthor( "作者" + String.valueOf(I)); 
            bookRepository.save(書籍); 
        } 
    } 

    @RequestMapping( "/更新" 公共 ボイド更新(){ 
        ブックブック = bookRepository.queryBookById( "1" )。
        book.setName( "新名称" ); 
        bookRepository.save(書籍); 
    } 

    @RequestMapping( "/削除" 削除(){ 
        ブックブック = bookRepository.queryBookById( "1" ); 
        bookRepository.delete(書籍); 
    } 

    @RequestMapping( "/ GETLIST" 公衆リスト<ブック> GETLIST(){ 
        リスト <ブック>リスト= 新規のArrayList <> (); 

        / * MatchQueryBuilder matchQueryBuilder =新しいMatchQueryBuilder( "ID"、 "1")。
        反復可能な<ブック>反復可能= bookRepository.search(matchQueryBuilder)。
        iterable.forEach(E-> list.add(e)参照)。* / 

        SEARCHQUERY SEARCHQUERY = 新しいNativeSearchQueryBuilder()()を構築します。<ブック>反復可能= bookRepository.search(SEARCHQUERY)。
        iterable.forEach(E - > list.add(e)参照)。
        戻り値のリスト。
    } 

    @RequestMapping( "/ページ" 公共ページ<ブック> ページ(){ 
        整数PAGENO = 1 
        整数のpageSize = 10 
        文字列のキーワード = "名" ; 
        SEARCHQUERY SEARCHQUERY = 新しいNativeSearchQueryBuilder()
                .withQuery(QueryBuilders.matchPhraseQuery( "名前" 、キーワード))
                .withPageable(PageRequest.of(PAGENO、pageSizeを))
                .build()。
        返すbookRepository.search(SEARCHQUERYを)。
    } 
}

 

おすすめ

転載: www.cnblogs.com/zengnansheng/p/11204054.html