博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringData--Elasticsearch
阅读量:2442 次
发布时间:2019-05-10

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

引入依赖

4.0.0
org.example
ES_springData
1.0-SNAPSHOT
1.8
1.8
org.elasticsearch
elasticsearch
5.6.8
org.elasticsearch.client
transport
5.6.8
org.apache.logging.log4j
log4j-to-slf4j
2.9.1
org.slf4j
slf4j-api
1.7.24
org.slf4j
slf4j-simple
1.7.21
log4j
log4j
1.2.12
junit
junit
4.12
com.fasterxml.jackson.core
jackson-databind
2.8.1
com.fasterxml.jackson.core
jackson-annotations
2.8.1
org.springframework.data
spring-data-elasticsearch
3.0.5.RELEASE
org.elasticsearch.plugin
transport-netty4-client
org.springframework
spring-test
5.0.4.RELEASE

配置

applicationContext.xml

实体

package pers.zhang.entity;import org.springframework.data.annotation.Id;import org.springframework.data.elasticsearch.annotations.Document;import org.springframework.data.elasticsearch.annotations.Field;import org.springframework.data.elasticsearch.annotations.FieldType;/** * @Author: acton_zhang * @Date: 2020/3/14 3:30 下午 * @Version 1.0 */@Document(indexName = "article-index", type = "article")public class Article {
@Id @Field(type = FieldType.Long, store = true) private Long id; @Field(type = FieldType.text, store = true, analyzer = "ik_smart") private String title; @Field(type = FieldType.text, store = true, analyzer = "ik_smart") private String content; public Long getId() {
return id; } public void setId(Long id) {
this.id = id; } public String getTitle() {
return title; } public void setTitle(String title) {
this.title = title; } public String getContent() {
return content; } public void setContent(String content) {
this.content = content; } @Override public String toString() {
return "Article{" + "id=" + id + ", title='" + title + '\'' + ", content='" + content + '\'' + '}'; }}

Repository

package pers.zhang.repository;import org.springframework.data.domain.Pageable;import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;import pers.zhang.entity.Article;import java.util.List;/** * @Author: acton_zhang * @Date: 2020/3/14 3:35 下午 * @Version 1.0 */public interface ArticleRepository extends ElasticsearchRepository
{
//根据标题进行查询 List
findByTitle (String title); List
findByTitleOrContent (String title, String context); List
findByTitleOrContent (String title, String context, Pageable pageable);}

测试

import org.elasticsearch.index.query.QueryBuilders;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.PageRequest;import org.springframework.data.domain.Pageable;import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import pers.zhang.entity.Article;import pers.zhang.repository.ArticleRepository;import java.util.List;import java.util.Optional;/** * @Author: acton_zhang * @Date: 2020/3/14 3:38 下午 * @Version 1.0 */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:applicationContext.xml")public class SpringDataElasticsearchTest {
@Autowired ArticleRepository articleRepository; @Autowired ElasticsearchTemplate elasticsearchTemplate; @Test public void createIndex () {
//创建索引,配置映射关系 elasticsearchTemplate.createIndex(Article.class); } @Test public void addDocument () {
Article article = new Article(); article.setId(1l); article.setTitle("Maven对象模型"); article.setContent("佛教圣地六块腹肌塑料袋放假了撒"); articleRepository.save(article); } @Test public void deleteById () {
articleRepository.deleteById(1l); } @Test //查询所有 public void findAll () {
Iterable
all = articleRepository.findAll(); all.forEach( a -> System.out.println(a)); } @Test //根据id查询 public void findById () {
Optional
byId = articleRepository.findById(2l); System.out.println(byId.get()); } @Test public void findByTitle () {
List
list = articleRepository.findByTitle("对象"); list.forEach( a -> System.out.println(a)); } @Test //多条件查询 public void findByTitleOrContent () {
List
list = articleRepository.findByTitleOrContent("ddd", "放假"); list.forEach( a -> System.out.println(a)); } @Test //分页查询 public void findByPage () {
Pageable pageable = PageRequest.of(0, 2); List
list = articleRepository.findByTitleOrContent("ddd", "放假", pageable); list.forEach( a -> System.out.println(a)); } //原生查询 @Test public void testNativeSearchQuery () {
NativeSearchQuery query = new NativeSearchQueryBuilder() .withQuery(QueryBuilders.queryStringQuery("佛放假").defaultField("content")) .withPageable(PageRequest.of(0, 5)) .build(); List
articles = elasticsearchTemplate.queryForList(query, Article.class); articles.forEach(a -> System.out.println(a)); }}

转载地址:http://sspqb.baihongyu.com/

你可能感兴趣的文章
docker react_10分钟内即可实现具有安全性的React + Docker
查看>>
vue.js表单验证_Vue.js中的模板驱动表单验证
查看>>
软件测试结束标志_使用功能标志进行生产中的测试
查看>>
css网格_在CSS网格中放置,跨度和密度
查看>>
火狐动态调试css_使用Firefox开发工具调试CSS网格
查看>>
服务周期性工作内容_使服务工作者生命周期神秘化
查看>>
响应式屏幕_检测角度的响应式屏幕尺寸
查看>>
使用Visual Studio Code调试Go代码
查看>>
使用Async的异步Javascript-等待
查看>>
vue中使用vuex_使用Vuex在Vue中处理身份验证
查看>>
JavaScript中的面向对象编程
查看>>
报纸打字项目_使用打字稿设置节点项目
查看>>
nuxt.js 全局 js_在Nuxt.js应用中实现身份验证
查看>>
具有NgClass和NgStyle的Angular 2+类
查看>>
网络抓取_使用ScrapeStack轻松进行网络抓取
查看>>
koa express_Koa简介-Express的未来
查看>>
github请求超时_在GitHub中创建第一个请求请求
查看>>
JavaScript函数式编程介绍:使用map(),filter()和reduce()进行列表处理
查看>>
使用Apollo在React中实现GraphQL
查看>>
vue vue-jsx标签_将JSX与Vue一起使用以及为什么要关心
查看>>