日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Data ElasticSearch入门案例

發布時間:2025/1/21 javascript 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Data ElasticSearch入门案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring Data ElasticSearch入門案例

創建maven工程elasticsearch_springdata

基于maven導入坐標

導入spring data elasticsearch,它是對elasticsearch API的簡化封裝。

<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>2.4.0</version> </dependency> <dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-elasticsearch</artifactId><version>2.0.4.RELEASE</version> </dependency>

導入spring test和junit,編寫測試用力需要進行測試。

<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.3.3.RELEASE</version> </dependency> <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version> </dependency>

導入slf4j-log4j日志包。

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.12</version> </dependency>

創建applicationContext.xml和log4j.properties配置文件,在applicationContext.xml配置文件中引入spring data elasticsearch名稱空間。

xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch" xsi:schemaLocation="http://www.springframework.org/schema/data/elasticsearchhttp://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd"

log4j配置文件

### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ### log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=c:/mylog.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=info, stdout

創建domain,dao,service包

編寫dao,繼承ElasticSearchRepository接口

public interface ArticleRepository extends ElasticsearchRepository<Article, Integer> { }

配置applicationContext.xml,掃描dao包自動創建dao的實現。

<!-- 掃描dao包 自動創建實現 --> <elasticsearch:repositories base-package="cn.niwotaxuexiba.dao" />

編寫service

@Service public class ArticleServiceImpl implements ArticleService {@Autowiredprivate ArticleRepository articleRepository;public void save(Article article){articleRepository.save(article);} }

配置applicationContext.xml,掃描service包

<!-- 掃描service包 --> <context:component-scan base-package="cn.niwotaxuexiba.service" />

配置applicationContext.xml連接elasticsearch.

<!-- 配置elasticsearch連接 --> <elasticsearch:transport-client id="client" cluster-nodes="localhost:9300"/> <!-- spring data elasticsearch DAO必須依賴elasticsearchTemplate --> <bean id="elasticsearchTemplate" class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate"><constructor-arg name="client" ref="client" /> </bean>

在使用spring data elasticsearch創建索引和映射時,需要將索引和映射信息配置在實體類上面。

@Document文檔對象(索引信息、文檔類型)

@Id文檔主鍵,是唯一標識

@Field每個文檔的字段配置(類型、是否分詞、是否存儲、分詞器)

@Document(indexName = "blog3",type="article") public class Article {@Id@Field(index=FieldIndex.not_analyzed,store=true,type=FieldType.Integer)private Integer id;@Field(index=FieldIndex.analyzed,analyzer="ik",store=true,searchAnalyzer="ik",type=FieldType.String)private String title;@Field(index=FieldIndex.analyzed,analyzer="ik",store=true,searchAnalyzer="ik",type=FieldType.String)private String content; }

通過ElasticsearchTemplate創建索引和添加映射

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations="classpath:applicationContext.xml") public class ArticleServiceImplTest {@Autowiredprivate ArticleService articleService;@Autowiredprivate Client client;@Autowiredprivate ElasticsearchTemplate elasticsearchTemplate;@Testpublic void createIndex() {elasticsearchTemplate.createIndex(Article.class);elasticsearchTemplate.putMapping(Article.class);} }

spring data search CRUD操作:

CrudRepository提供增刪改查save/delete/findAll/findOne的方法;

PagingAndSortingRepository提供分頁和排序的方法。

@Service public class ArticleServiceImpl implements ArticleService {@Autowiredprivate ArticleRepository articleRepository;@Overridepublic void save(Article article){articleRepository.save(article);}@Overridepublic void delete(Article article) {// TODO Auto-generated method stubarticleRepository.delete(article);}@Overridepublic Article findOne(Integer id) {// TODO Auto-generated method stubreturn articleRepository.findOne(id);}@Overridepublic Iterable<Article> findAll() {// TODO Auto-generated method stubreturn articleRepository.findAll();} }

查詢標題的方法

service

@Override public List<Article> findByTitle(String title) {// TODO Auto-generated method stubreturn articleRepository.findByTitle(title); }

dao

public interface ArticleRepository extends ElasticsearchRepository<Article, Integer> {List<Article> findByTitle(String title); }

分頁條件查詢,需要在查詢方法中,傳入Pageable對象。

service

public Page<Article> findByTitle(String title, Pageable pageable) {// TODO Auto-generated method stubreturn articleRepository.findByTitle(title,pageable); }

dao

public interface ArticleRepository extends ElasticsearchRepository<Article, Integer> {Page<Article> findByTitle(String title, Pageable pageable);}

總結

以上是生活随笔為你收集整理的Spring Data ElasticSearch入门案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。