環境:
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を)。 } }