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入门案例相关推荐
- Spring Data Elasticsearch案例详解
一.Elasticsearch 工作原理 1.1 文档存储的路由 当索引到一个文档(如:报价系统),具体的文档数据(如:报价数据)会存储到一个分片.具体文档数据会被切分,并分别存储在分片 1 或者 分 ...
- Lucene 和 Kibana、ElasticSeach、Spring Data ElasticSearch
什么是全文检索 数据分类 生活中的数据总体分为两种:结构化数据和非结构化数据. 结构化数据 - 行数据,可以用二维表结构来逻辑表达实现的数据:指具有固定格式或有限长度的数据,如数据库,元数据等. 非结 ...
- Elasticsearch 实战1:ES 项目实战(一)Java 集成 Spring Data Elasticsearch(一):简介及环境搭建
一:前语 1.项目文档 CSDN 专栏:<Elasticsearch 入门和项目实战> 博客路径: https://blog.csdn.net/a767815662/category_91 ...
- 【javaWeb微服务架构项目——乐优商城day07】——Elasticsearch介绍和安装及使用(安装kibana,安装ik分词器,Spring Data Elasticsearch,高级查询)
文章目录 0.学习目标 1.Elasticsearch介绍和安装 1.1.简介 1.1.1.Elastic 1.1.2.Elasticsearch 1.1.3.版本 1.2.安装和配置 1.2.1.新 ...
- Spring data elasticsearch的使用
Spring data elasticsearch的使用 ArticleService package cn.zxl.service;import java.util.List;import org. ...
- SpringData ElasticSearch入门案例
导入需要的依赖坐标 <dependencies><dependency><groupId>org.elasticsearch</groupId>< ...
- Spring Data Solr入门
Spring Data Solr是Spring Data项目的扩展,该项目旨在简化Apache Solr在Spring应用程序中的使用. 请注意,这不是Spring(数据)或Solr的简介. 我认为您 ...
- spring data elasticsearch 对应 elasticsearch 版本
spring data elasticsearch elasticsearch 3.2.x 6.5.0 3.1.x 6.2.2 3.0.x 5.5.0 2.1.x 2.4.0 2.0.x 2.2.0 ...
- Spring Boot + Spring Data + Elasticsearch实例
在本文中,我们将讨论"如何创建Spring Boot + Spring Data + Elasticsearch范例". 本文中使用的工具: Spring Boot 1.5.1.R ...
最新文章
- android网络请求框架_2020,最新APP重构:网络请求框架
- 如何快速查看mysql数据文件存放路径?
- OpenSSL再曝CCS注入漏洞-心伤未愈又成筛子
- 《java入门第一季》之面向对象(包概述)
- sap bom递归_SAP软件之化工行业特点01
- VC调用QT的UIDLL
- 【分享】终端命令工具 自动生成vue组件文件以及修改router.js
- ea 如何画bce备选架构图_GitHub - wongdean/rime-settings at 941ea079832ff211723bce1ce8e47344e527575e...
- Android的存储方式
- 单机如何修改服务器,修改dnf单机服务器地址
- 运维演进正确之道-ITIL+DevOps双态运维
- 智方8000系汽车配件进销存管理系统 v8.28 bt
- 英语二作文模板及范文
- 中国互联网公司如何进军海外,先行者六点血泪教训
- 将图片转化成SVG格式(亲测可行)
- 多协议充电桩平台系统小程序方案
- NaN == NaN 的结果是什么?
- 商业银行内容管理和档案管理
- web安全攻防学习之1-渗透测试信息收集
- 云计算-让企业更方便
热门文章
- 序列化推荐系统总结:Sequential Recommender Systems: Challenges, Progress and Prospect
- 互联网1分钟 | 0306 熊猫直播被爆本月申请破产;腾讯QQ注销功能本周灰度体验,预计下周正式发布...
- 记录Nginx模块开发
- 轮播插件swiper.js?
- pgpool-II3.1 的内存泄漏(六)
- nginx配置长连接
- 【noi 2.6_9284】盒子与小球之二(DP)
- mysql max_allowed_packet 查询和修改
- APT***的那些事
- permute、transpose、view、reshape、unsequeeze与flatten