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入门案例相关推荐

  1. Spring Data Elasticsearch案例详解

    一.Elasticsearch 工作原理 1.1 文档存储的路由 当索引到一个文档(如:报价系统),具体的文档数据(如:报价数据)会存储到一个分片.具体文档数据会被切分,并分别存储在分片 1 或者 分 ...

  2. Lucene 和 Kibana、ElasticSeach、Spring Data ElasticSearch

    什么是全文检索 数据分类 生活中的数据总体分为两种:结构化数据和非结构化数据. 结构化数据 - 行数据,可以用二维表结构来逻辑表达实现的数据:指具有固定格式或有限长度的数据,如数据库,元数据等. 非结 ...

  3. Elasticsearch 实战1:ES 项目实战(一)Java 集成 Spring Data Elasticsearch(一):简介及环境搭建

    一:前语 1.项目文档 CSDN 专栏:<Elasticsearch 入门和项目实战> 博客路径: https://blog.csdn.net/a767815662/category_91 ...

  4. 【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.新 ...

  5. Spring data elasticsearch的使用

    Spring data elasticsearch的使用 ArticleService package cn.zxl.service;import java.util.List;import org. ...

  6. SpringData ElasticSearch入门案例

    导入需要的依赖坐标 <dependencies><dependency><groupId>org.elasticsearch</groupId>< ...

  7. Spring Data Solr入门

    Spring Data Solr是Spring Data项目的扩展,该项目旨在简化Apache Solr在Spring应用程序中的使用. 请注意,这不是Spring(数据)或Solr的简介. 我认为您 ...

  8. 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 ...

  9. Spring Boot + Spring Data + Elasticsearch实例

    在本文中,我们将讨论"如何创建Spring Boot + Spring Data + Elasticsearch范例". 本文中使用的工具: Spring Boot 1.5.1.R ...

最新文章

  1. android网络请求框架_2020,最新APP重构:网络请求框架
  2. 如何快速查看mysql数据文件存放路径?
  3. OpenSSL再曝CCS注入漏洞-心伤未愈又成筛子
  4. 《java入门第一季》之面向对象(包概述)
  5. sap bom递归_SAP软件之化工行业特点01
  6. VC调用QT的UIDLL
  7. 【分享】终端命令工具 自动生成vue组件文件以及修改router.js
  8. ea 如何画bce备选架构图_GitHub - wongdean/rime-settings at 941ea079832ff211723bce1ce8e47344e527575e...
  9. Android的存储方式
  10. 单机如何修改服务器,修改dnf单机服务器地址
  11. 运维演进正确之道-ITIL+DevOps双态运维
  12. 智方8000系汽车配件进销存管理系统 v8.28 bt
  13. 英语二作文模板及范文
  14. 中国互联网公司如何进军海外,先行者六点血泪教训
  15. 将图片转化成SVG格式(亲测可行)
  16. 多协议充电桩平台系统小程序方案
  17. NaN == NaN 的结果是什么?
  18. 商业银行内容管理和档案管理
  19. web安全攻防学习之1-渗透测试信息收集
  20. 云计算-让企业更方便

热门文章

  1. 序列化推荐系统总结:Sequential Recommender Systems: Challenges, Progress and Prospect
  2. 互联网1分钟 | 0306 熊猫直播被爆本月申请破产;腾讯QQ注销功能本周灰度体验,预计下周正式发布...
  3. 记录Nginx模块开发
  4. 轮播插件swiper.js?
  5. pgpool-II3.1 的内存泄漏(六)
  6. nginx配置长连接
  7. 【noi 2.6_9284】盒子与小球之二(DP)
  8. mysql max_allowed_packet 查询和修改
  9. APT***的那些事
  10. permute、transpose、view、reshape、unsequeeze与flatten