博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ElasticSearch(十一):Spring Data ElasticSearch 的使用(一)
阅读量:5040 次
发布时间:2019-06-12

本文共 11101 字,大约阅读时间需要 37 分钟。

1、环境准备

 我本地使用的环境为:

  虚拟机版本:Centos 7.3 两台   IP 分别为:192.168.56.12, 192.168.56.13

  Elasticsearch版本:6.4.0  (已安装IK分词器)

  虚拟机中JDK版本:12.0.1

  宿主机系统:Windows 10

  宿主机JDK版本:1.8

  Idea版本: 2019.1.3

2、创建工程

  1)、在Idea中创建一个Maven工程,并导入Spring Data Elasticsearch依赖。

     Spring Data Elasticsearch依赖(pom.xml): 

1 
2
5
4.0.0
6 7
com.Aiden
8
SpringData-elasticsearch
9
1.0-SNAPSHOT
10 11
12
13
org.elasticsearch
14
elasticsearch
15
5.6.8
16
17
18
org.elasticsearch.client
19
transport
20
5.6.8
21
22
23
org.apache.logging.log4j
24
log4j-to-slf4j
25
2.9.1
26
27
28
org.slf4j
29
slf4j-api
30
1.7.24
31
32
33
org.slf4j
34
slf4j-simple
35
1.7.21
36
37
38
log4j
39
log4j
40
1.2.12
41
42
43
junit
44
junit
45
4.12
46
47 48 49
50
com.fasterxml.jackson.core
51
jackson-core
52
2.8.1
53
54
55
com.fasterxml.jackson.core
56
jackson-databind
57
2.8.1
58
59
60
com.fasterxml.jackson.core
61
jackson-annotations
62
2.8.1
63
64 65 66
67
org.springframework.data
68
spring-data-elasticsearch
69
3.0.5.RELEASE
70
71
72
org.elasticsearch.plugin
73
transport-netty4-client
74
75
76
77 78
79
org.springframework
80
spring-test
81
5.0.4.RELEASE
82
83 84
85 86 87

  2)、创建配置文件

  在maven工程的resource目录下创建Spring Data Elasticsearch的配置文件  ApplicationContext.xml,并引入Elasticsearch命名空

  ApplicationContext.xml文件内容:

1 
2
14 15 16

  3)、创建实体Film

  在maven工程中创建包com.Aiden.doamin,并在此包下创建实体类Film

1 package com.Aiden.domain; 2  3 import org.springframework.data.annotation.Id; 4 import org.springframework.data.elasticsearch.annotations.Document; 5 import org.springframework.data.elasticsearch.annotations.Field; 6 import org.springframework.data.elasticsearch.annotations.FieldType; 7  8 public class Film { 9 10     private Long id;11     private String title;12     private String content;13     private String date;14     private String price;15     private String director;16 17     public Long getId() {18         return id;19     }20 21     public void setId(Long id) {22         this.id = id;23     }24 25     public String getTitle() {26         return title;27     }28 29     public void setTitle(String title) {30         this.title = title;31     }32 33     public String getContent() {34         return content;35     }36 37     public void setContent(String content) {38         this.content = content;39     }40 41     public String getDate() {42         return date;43     }44 45     public void setDate(String date) {46         this.date = date;47     }48 49     public String getPrice() {50         return price;51     }52 53     public void setPrice(String price) {54         this.price = price;55     }56 57     public String getDirector() {58         return director;59     }60 61     public void setDirector(String director) {62         this.director = director;63     }64 65     @Override66     public String toString() {67         return "Film{" +68                 "id=" + id +69                 ", title='" + title + '\'' +70                 ", content='" + content + '\'' +71                 ", date='" + date + '\'' +72                 ", price='" + price + '\'' +73                 ", director='" + director + '\'' +74                 '}';75     }76 }

  4)、创建Dao

  在maven工程中创建com.Aiden.dao包,并在包中创建仓库 FilmRepository

1 package com.Aiden.dao; 2  3 import com.Aiden.domain.Film; 4 import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; 5 import org.springframework.stereotype.Repository; 6  7 @Repository 8 public interface FilmRepository extends ElasticsearchRepository
{ 9 10 }

  5)、创建Service

  在maven工程中创建com.Aiden.service包,并在包中创建 FilmService 接口,并在其中添加save方法

1 package com.Aiden.service;2 3 import com.Aiden.domain.Film;4 5 public interface FilmService {6 7     public void save(Film film);8 9 }

  在刚创建的service包下创建Impl包(即com.Aiden.service.Impl包),并在此包中创建FilmServiceImpl类并实现FilmService接口,实现其方法

1 package com.Aiden.service.impl; 2  3 import com.Aiden.dao.FilmRepository; 4 import com.Aiden.domain.Film; 5 import com.Aiden.service.FilmService; 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.stereotype.Service; 8  9 @Service10 public class FilmServiceImpl implements FilmService {11 12     @Autowired13     private FilmRepository filmRepository;14 15     public void save(Film film) {16         filmRepository.save(film);17     }18 19 }

  6)、修改Spring Data Elasticsearch配置文件ApplicationContext.xml,完成项目配置

1 
2
14 15
16
17 18
19
20 21
22
23 24 25
26
27
28
29 30

  7)、配置实体类

  基于spring data elasticsearch注解配置索引、映射和实体的关系

1 package com.Aiden.domain; 2  3 import org.springframework.data.annotation.Id; 4 import org.springframework.data.elasticsearch.annotations.Document; 5 import org.springframework.data.elasticsearch.annotations.Field; 6 import org.springframework.data.elasticsearch.annotations.FieldType; 7  8 @Document(indexName = "film",type = "action") 9 public class Film {10     @Id11     private Long id;12     @Field(index = true,analyzer = "ik_max_word",store = true,searchAnalyzer = "ik_max_word",type = FieldType.text)13     private String title;14     @Field(index = true,analyzer = "ik_max_word",store = true,searchAnalyzer = "ik_max_word",type = FieldType.text)15     private String content;16     @Field(index = true,analyzer = "ik_max_word",store = true,searchAnalyzer = "ik_max_word",type = FieldType.text)17     private String date;18     @Field(index = true,analyzer = "ik_max_word",store = true,searchAnalyzer = "ik_max_word",type = FieldType.text)19     private String price;20     @Field(index = true,analyzer = "ik_max_word",store = true,searchAnalyzer = "ik_max_word",type = FieldType.text)21     private String director;22 23     public Long getId() {24         return id;25     }26 27     public void setId(Long id) {28         this.id = id;29     }30 31     public String getTitle() {32         return title;33     }34 35     public void setTitle(String title) {36         this.title = title;37     }38 39     public String getContent() {40         return content;41     }42 43     public void setContent(String content) {44         this.content = content;45     }46 47     public String getDate() {48         return date;49     }50 51     public void setDate(String date) {52         this.date = date;53     }54 55     public String getPrice() {56         return price;57     }58 59     public void setPrice(String price) {60         this.price = price;61     }62 63     public String getDirector() {64         return director;65     }66 67     public void setDirector(String director) {68         this.director = director;69     }70 71     @Override72     public String toString() {73         return "Film{" +74                 "id=" + id +75                 ", title='" + title + '\'' +76                 ", content='" + content + '\'' +77                 ", date='" + date + '\'' +78                 ", price='" + price + '\'' +79                 ", director='" + director + '\'' +80                 '}';81     }82 }

  8)、创建测试类

  在maven工程的test文件夹下创建测试类 SpringDataElasticSearchTest,并添加测试方法

1 package com.Aiden.Test; 2  3 import com.Aiden.domain.Film; 4 import com.Aiden.service.FilmService; 5 import org.junit.Test; 6 import org.junit.runner.RunWith; 7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; 9 import org.springframework.test.context.ContextConfiguration;10 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;11 12 import java.util.List;13 14 15 @RunWith(SpringJUnit4ClassRunner.class)16 @ContextConfiguration(locations = "classpath:ApplicationContext.xml")17 public class SpringDataElasticSearchTest {18 19     @Autowired20     private FilmService filmService;21 22     @Autowired23     private ElasticsearchTemplate elasticsearchTemplate;24 25     @Test26     public void createIndex() throws Exception {27         elasticsearchTemplate.createIndex(Film.class);28         elasticsearchTemplate.putMapping(Film.class);29     }30 31     @Test32     public void saveFilm1() {33         Film film = new Film();34         film.setTitle("蜘蛛侠:英雄远征 Spider-Man: Far from Home");35         film.setContent("在复仇者联盟众英雄的努力下,于灭霸无限手套事件中化作为灰烬的人们,重新回到了人世间,曾经消失的蜘蛛侠 彼得帕克 也回归到了普通的生活之中,数月后,蜘蛛侠彼得帕克所在的学校举行了欧洲旅游,帕克也在其中, 在欧州威尼斯旅行时,一个巨大无比的水怪袭击了威尼斯,不敌敌人的蜘蛛侠幸得一位自称神秘客的男子搭救才击退敌人,之后 神盾局局长找上正在旅游的彼得帕克并要求其加入神盾局,并安排神秘客协助帕克,神秘客自称来自其他宇宙,并告知一群名为元素众的邪恶势力已经入侵这个宇宙了,为了守护来之不易的和平,蜘蛛侠决定与神秘客联手,然而在神秘客那头罩之中,似乎隐藏着什么不为人知的真相……");36         film.setDate("2019-06-28");37         film.setDirector("乔·沃茨");38         film.setPrice("78");39         film.setId(1L);40         filmService.save(film);41     }42 43 }

  9)、运行测试

  执行SpringDataElasticSearchTest中的测试方法 createIndex 、saveFilm1,创建索引及加入文档。

  测试方法执行完毕,在head插件中查看Elasticsearch集群中索引情况:

  索引创建成功:

 

 

查看索引信息中的mapping信息,创建正常:

 

 

执行saveFilm1加入文档,文档加入成功:

 

 

至此Spring Data Elasticsearch工程创建成功!

转载于:https://www.cnblogs.com/guoxiangyue/p/11176860.html

你可能感兴趣的文章
Visual Studio Code 构建C/C++开发环境
查看>>
web自己主动保存表单
查看>>
lua基金会【五岁以下儿童】I/O文件操作
查看>>
一个小的日常实践——高速Fibonacci数算法
查看>>
创建与删除索引
查看>>
java的基本数据类型
查看>>
机器学些技法(9)--Decision Tree
查看>>
静态页面复习--用semantic UI写一个10min首页
查看>>
在Windows下安装64位压缩包版mysql 5.7.11版本的方法
查看>>
drf权限组件
查看>>
输入月份和日期,得出是今年第几天
查看>>
利用mysqldump备份mysql
查看>>
Qt中子窗口全屏显示与退出全屏
查看>>
使用brew安装软件
查看>>
[BZOJ1083] [SCOI2005] 繁忙的都市 (kruskal)
查看>>
吴裕雄 python 机器学习——数据预处理嵌入式特征选择
查看>>
Centos6.4安装JDK
查看>>
201521123069 《Java程序设计》 第4周学习总结
查看>>
线性表的顺序存储——线性表的本质和操作
查看>>
【linux】重置fedora root密码
查看>>