文章目录
- BlogRepository.java
- BlogRepositoryTest.java
- BulkTest.java
文档的管理
ElasticSearchRepository接口
使用方法:
创建一个接口,继承于ElasticSearchRepository,指定使用的Entity类及对应主键数据类型
Springboot自动扫描接口并创建代理对象
- 新增、更新数据
使用repository的save方法实现 - 删除数据
deleteById
deleteAll - 查询数据
可以使用repository自带的查询方法
findById
findAll
可以自定义查询方法
findBy{Title}And{content}(String title, String content);
按照命名规则定义方法,就可以实现相应的查询
BlogRepository.java
package com.xd.cubemall.search.repository;import com.xd.cubemall.search.model.Blog;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;import java.util.List;public interface BlogRepository extends ElasticsearchRepository<Blog, Long> {List<Blog> findByTitle(String title);List<Blog> findByTitleAndContent(String title, String content);
}
BlogRepositoryTest.java
package com.xd.cubemall.sdes;import com.xd.cubemall.search.CubemallSearchApplication;
import com.xd.cubemall.search.model.Blog;
import com.xd.cubemall.search.repository.BlogRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.PageRequest;
import org.springframework.test.context.junit4.SpringRunner;import java.util.List;
import java.util.Optional;@RunWith(SpringRunner.class)
@SpringBootTest(classes = CubemallSearchApplication.class)
public class BlogRepositoryTest {@Autowiredprivate BlogRepository blogRepository;@Testpublic void addDocument() {Blog blog = new Blog();for (int i = 0; i < 50; i++) {blog.setId((long) (i+1));blog.setTitle("测试文档"+(i+1));blog.setContent("测试文档的内容"+(i+1));blog.setComment("注释内容");blog.setMobile("111111");blogRepository.save(blog);}}@Testpublic void updateDocument() {Optional<Blog> optional = blogRepository.findById(1l);if (optional.isPresent()) {Blog blog = optional.get();blog.setTitle("hello world");blogRepository.save(blog);}}@Testpublic void deleteDocument() {blogRepository.deleteById(1l);}@Testpublic void getById() {
// Optional<Blog> optional = blogRepository.findById(1l);
// Blog blog = optional.get();
// System.out.println(blog);Iterable<Blog> all = blogRepository.findAll(PageRequest.of(1,10));all.forEach(b-> System.out.println(b));}@Testpublic void testFindByTitle() {List<Blog> list = blogRepository.findByTitle("测试");//termlist.stream().forEach(System.out::println);}@Testpublic void testFindByTitleAndContent() {List<Blog> list = blogRepository.findByTitleAndContent("37", "内容");list.forEach(e-> System.out.println(e));}}
BulkTest.java
package com.xd.cubemall.sdes;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xd.cubemall.search.CubemallSearchApplication;
import com.xd.cubemall.search.model.Blog;
import com.xd.cubemall.search.repository.BlogRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
import org.springframework.data.elasticsearch.core.query.IndexQuery;
import org.springframework.test.context.junit4.SpringRunner;import java.util.List;
import java.util.stream.Collectors;@RunWith(SpringRunner.class)
@SpringBootTest(classes = CubemallSearchApplication.class)
public class BulkTest {@Autowiredprivate ElasticsearchRestTemplate template;@Autowiredprivate BlogRepository blogRepository;@Testpublic void bulkBlog() {JSONArray jsonArray = JSON.parseArray("");List<IndexQuery> list = jsonArray.stream().map(json -> {IndexQuery query = new IndexQuery();query.setId(((JSONObject) json).getString("id"));query.setSource(((JSONObject) json).toJSONString());return query;}).collect(Collectors.toList());template.bulkIndex(list, IndexCoordinates.of("blog_1"));}@Testpublic void saveAllBlog() {JSONArray jsonArray = JSON.parseArray("");List<Blog> list = jsonArray.stream().map(json -> {JSONObject jsonObject = ((JSONObject) json);Blog blog = jsonObject.toJavaObject(Blog.class);return blog;}).collect(Collectors.toList());blogRepository.saveAll(list);}}