elasticsearch之hello(spring data整合)

1.书写pom.xml文件

	<dependencies>
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-elasticsearch</artifactId>
			<version>2.0.4.RELEASE</version>
		</dependency>
		<dependency>
  		<groupId>org.springframework.data</groupId>
  		<artifactId>spring-data-elasticsearch</artifactId>
  		<version>2.0.4.RELEASE</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-test</artifactId>
  		<version>4.2.8.RELEASE</version>
  	</dependency>
  	<dependency>
  		<groupId>junit</groupId>
  		<artifactId>junit</artifactId>
  		<version>4.12</version>
  	</dependency>
  	<dependency>
  		<groupId>org.slf4j</groupId>
  		<artifactId>slf4j-log4j12</artifactId>
  		<version>1.7.12</version>
  	</dependency>
	</dependencies>

  2.applicationContext.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/data/elasticsearch
		http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd ">

 	<!-- 扫描DAO包 自动创建实现 -->
 	<elasticsearch:repositories base-package="com.baidu.dao" />

 	<!-- 扫描Service包 -->
 	<context:component-scan base-package="com.baidu.service" />

 	<!-- 配置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>

</beans>

  

Demo01.java

package com.baidu.test01;

import org.elasticsearch.client.Client;
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.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.baidu.domain.Article;
import com.baidu.service.ArticleService;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class Demo01 {

	@Autowired
	private ArticleService articleService;

	@Autowired
	private Client client; // 基于原生API

	@Autowired
	private ElasticsearchTemplate elasticsearchTemplate;

	@Test
	public void createIndex() {
		//创建索引
		elasticsearchTemplate.createIndex(Article.class);
		//创建映射
		elasticsearchTemplate.putMapping(Article.class);
	}
	@Test  //创建文档
	public void createDoc() {
		for (int i = 2; i < 20; i++) {
			Article ac=new Article();
			ac.setId(i);
			ac.setTitle("testSave"+i);
			ac.setContent("仅仅只是在测试test"+i);
			//文档操作
			articleService.save(ac);
		}
	}
	@Test  //查询文档
	public void searchDoc() {
		//文档操作
		articleService.findAll();
	}

	@Test  //查询文档
	public void searchDoc01() {
		//文档操作
		articleService.findById(1);
	}

	@Test  //查询文档
	public void searchDoc02() {
		//模糊查询
		articleService.findByTitle("testsave");
	}

	@Test  //查询文档
	public void searchDoc03() {
		PageRequest pr=new PageRequest(0, 4,new Sort(Direction.DESC, "id"));
		//分页查询  按照降序排序
		articleService.findAll(pr);
	}
}

  

ArticleService.java文件(接口)
package com.baidu.service;

import org.springframework.data.domain.PageRequest;

import com.baidu.domain.Article;

public interface ArticleService {
	void save(Article ac);

	void findAll();

	void findById(Integer i);

	void findAll(PageRequest pr);

	void findByTitle(String string);

} 
ArticleService实现类
package com.baidu.service.imp;

import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.WildcardQueryBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.data.elasticsearch.core.query.SearchQuery;
import org.springframework.stereotype.Service;

import com.baidu.dao.ArticleDao;
import com.baidu.domain.Article;
import com.baidu.service.ArticleService;

@Service
public class ArticleServiceImp implements ArticleService{

	@Autowired
	private ArticleDao articleDao;
	public void save(Article ac) {
		articleDao.save(ac);
	}
	public void findAll() {
		Iterable<Article> all = articleDao.findAll();
		for (Article article : all) {
			System.out.println(article);
		}
	}
	public void findById(Integer i) {
		Article article = articleDao.findById(i);
		System.out.println(article);

	}
	public void findAll(PageRequest pr) {
		Page<Article> page = articleDao.findAll(pr);
		System.out.println(page.getContent());
	}
	public void findByTitle(String string) {
		//需要根据内容的分词进行查询
		QueryBuilder query= new WildcardQueryBuilder("title", "*"+string+"*");
		SearchQuery searchQuery = new NativeSearchQuery(query);
		PageRequest pr=new PageRequest(0, 4,new Sort(Direction.DESC, "id"));
		searchQuery.setPageable(pr);
		Page<Article> page = articleDao.search(searchQuery);
		System.out.println(page.getContent());
	}

}

  

ArticleDao.java
package com.baidu.dao;

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

import com.baidu.domain.Article;

public interface ArticleDao extends ElasticsearchRepository<Article, Integer> {
	Article findById(Integer i);
}

  

原文地址:https://www.cnblogs.com/fjkgrbk/p/elasticsearch_springdata.html

时间: 2024-07-30 10:26:54

elasticsearch之hello(spring data整合)的相关文章

spring data整合elasticsearch的applicationContext.xml文件模板

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/sch

spring data 整合mongodb

<!--spring-data: --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-commons</artifactId> <version>1.4.1.RELEASE</version> </dependency> <dependency> <groupId&

使用JAVA操作ElasticSearch(Java API 和Spring Data ElasticSearch)

Java API 我的ElasticSearch集群的版本是6.2.4,导入elasticsearch相关的maven依赖也是6.2.4,不同版本的api可能会有差异 一:maven依赖 <!--elasticsearch核心依赖--> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version

Spring Data ElasticSearch的使用十个小案例

1.什么是Spring Data Spring Data是一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务. Spring Data可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作.除了CRUD外,还包括如分页.排序等一些常用的功能. 2.什么是Spring Data ElasticSearch Spring Data ElasticSearch 基于 spring data

Spring Data ElasticSearch的使用

1.什么是Spring Data Spring Data是一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务. Spring Data可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作.除了CRUD外,还包括如分页.排序等一些常用的功能. 2.什么是Spring Data ElasticSearch Spring Data ElasticSearch 基于 spring data

Spring Data学习中心

Spring Data 概览 Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数据存储的特殊特性. 它使数据访问技术,关系数据库和非关系数据库,map-reduce框架和基于云的数据服务变得简单易用. 这是一个伞形项目,其中包含许多特定于给定数据库的子项目. 这些项目是通过与这些激动人心的技术背后的许多公司和开发人员合作开发的. ----------- 星云解读: 众所周知,数据库大体上可以分为关系型数据库和非关系型数据库. 数据库种类繁多,为了

SpringBoot整合Spring Data Elasticsearch

Spring Data Elasticsearch提供了ElasticsearchTemplate工具类,实现了POJO与elasticsearch文档之间的映射 elasticsearch本质也是存储数据,它不支持事物,但是它的速度远比数据库快得多, 可以这样来对比elasticsearch和数据库 索引(indices)--------数据库(databases) 类型(type)------------数据表(table) 文档(Document)---------------- 行(ro

Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询

运行环境:JDK 7 或 8,Maven 3.0+技术栈:SpringBoot 1.5+,ElasticSearch 2.3.2 本文提纲一.ES 的使用场景二.运行 springboot-elasticsearch 工程三.springboot-elasticsearch 工程代码详解 一.ES 的使用场景 简单说,ElasticSearch(简称 ES)是搜索引擎,是结构化数据的分布式搜索引擎.在<Elasticsearch 和插件 elasticsearch-head 安装详解>  和

Spring轻松整合ElasticSearch

完整项目代码地址(https://github.com/fonxian/spring-elasticsearch-example/tree/master/spring-elasticsearch-example) 一.整合过程 1.引入依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>