春のブート統合フレームワークElasticSearch

アプリケーションでは、多くの場合、機能が取得される - 方法(キーワードなど)のデータベースを確認した場合、データベースクエリのキーワードに含まれるデータを、効率が非常に低いです。この問題を解決するために、我々はElasticSearchフレームワークを導入しました。

ElasticSearchをダウンロードしてインストールし、ブログを参照してください。https://blog.csdn.net/yjclsx/article/details/81302041

次に、我々は春データElasticsearchリポジトリがElasticSearchを統合使います 

ステップ1:マッピングの導入

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

ステップ2:設定されたプロファイル

spring.data.elasticsearch.cluster名= elasticsearch 
spring.data.elasticsearch.cluster-ノード= 127.0.0.1:9300 
spring.data.elasticsearch.repositories.enabled =真

ステップ3 ::エンティティクラスを定義します

パッケージcom.example.demo.domain。

インポートしたjava.io.Serializable;
輸入org.springframework.data.elasticsearch.annotations.Document。

@Document(INDEXNAME =「ブログ」、タイプ=「記事」パブリック クラス条が実装Serializableを{
     プライベート 静的 最終 長い serialVersionUIDの= 1Lをプライベート 長いID。
    プライベート文字列のタイトル。
    プライベート文字列の要約。
    プライベート文字列の内容。
    プライベート int型のPV。
    // 省略ゲッター、セッター方法
}

ここでは、物品を表し条インスタンスの定義。類推リレーショナルデータベース、インデックス同等のテーブルには、同等のレコードを文書化した場合

ElasticSearch 5.6.8ですElasticSearch 6.Xバージョンでは、タイプの使用はお勧めしませんが、また7.xでのバージョンが完全に廃止された型になりますが、私はここにいる、それはまだ書かタイプです。ここで、また、インデックス・エントリに代わって記事に代わって記事。

ステップ4:インターフェースの定義、および継承ElasticSearchRepository

パッケージcom.example.demo.repository。

輸入com.example.demo.domain.Article。
輸入org.springframework.data.elasticsearch.annotations.Document。
輸入org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
輸入org.springframework.stereotype.Component。
輸入org.springframework.stereotype.Repository; 


@Component 
// @Repository 
パブリック インターフェイス ArticleRepositoryは延び ElasticsearchRepository <論文、ロング> { 

}

ここにリポジトリDAOに相当し、操作は同じMySQLやElasticSearchです

ステップ5:サービスのインタフェースと実装クラスを定義します。

パッケージcom.example.demo.service。

輸入com.example.demo.domain.Article。
輸入org.elasticsearch.index.query.QueryBuilder。

パブリック インターフェイスArticleService { 

    (条条)保存条; 

    反復可能な <論説> 検索(QueryBuilder queryBuilder)。
}

実装クラス

パッケージcom.example.demo.service.impl。

輸入com.example.demo.domain.Article。
輸入com.example.demo.repository.ArticleRepository。
輸入com.example.demo.service.ArticleService。
輸入org.elasticsearch.index.query.QueryBuilder。
輸入org.springframework.beans.factory.annotation.Autowired;
輸入org.springframework.stereotype.Service。

@Service 
パブリック クラス ArticleServiceImplは実装ArticleService { 
    @Autowired 
    プライベートArticleRepositoryのarticleRepositoryを。

    @Override 
    公衆(記事の記事){保存条
         戻りarticleRepository.save(記事)。
    } 

    @Override 
    公共のIterable <論文>   検索(QueryBuilder queryBuilder){
         戻りarticleRepository.search(queryBuilder)を、
    } 

}

ステップ6:テストメソッドを書きます

パッケージcom.example.demo.controller。

輸入com.example.demo.domain.Article。
輸入com.example.demo.domain.JsonData。
輸入com.example.demo.repository.ArticleRepository。

輸入com.example.demo.service.ArticleService。
輸入org.elasticsearch.index.query.QueryBuilder。
輸入org.elasticsearch.index.query.QueryBuilders。
輸入org.springframework.beans.factory.annotation.Autowired;
輸入org.springframework.web.bind.annotation.GetMapping。
輸入org.springframework.web.bind.annotation.RequestMapping。
輸入org.springframework.web.bind.annotation.RestController。


@RestController 
@RequestMapping( "/ API / V1 /資料" パブリック クラスArticleControllerは{ 

    @Autowired 
    プライベートArticleServiceのarticleService。
    
    (@GetMapping "保存" 公共の保存オブジェクトを(長いID、文字列のタイトル){ 
    
        条の記事 = 条(); 
        article.setId(ID)。
        article.setPv( 123 )。
        article.setContent( "搜索elasticsearch框架整合" ); 
        article.setTitle(タイトル)。
        article.setSummary( "搜索框架整合" );

        articleService.save(記事)。
    
        返すJsonData.buildSuccessを(); 
    } 

    
    @GetMapping( "検索" パブリックオブジェクト検索(文字列のタイトル){ 

        // QueryBuilder queryBuilder = QueryBuilders.matchAllQuery()。// 搜索全部文档 
        QueryBuilder queryBuilder = QueryBuilders.matchQuery( "タイトル" 、タイトル)。

        反復可能な <論説>リスト=   articleService.search(queryBuilder)。
        
        返すJsonData.buildSuccess(リスト)。
    } 

}

ポストマン・テストを使用します

 

 

参考記事:https://www.cnblogs.com/cjsblog/p/9756978.html

おすすめ

転載: www.cnblogs.com/jwen1994/p/11374154.html