文章目录
文档的管理
ElasticSearchRepository接口
使用方法:
创建一个接口,继承于ElasticSearchRepository,指定使用的Entity类及对应主键数据类型
Springboot自动扫描接口并创建代理对象
- 新增、更新数据
使用repository的save方法实现 - 删除数据
deleteById
deleteAll - 查询数据
可以使用repository自带的查询方法
findById
findAll
可以自定义查询方法
findBy{Title}And{content}(String title, String content);
按照命名规则定义方法,就可以实现相应的查询
BlogRepository.java
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
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 {
@Autowired
private BlogRepository blogRepository;
@Test
public 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);
}
}
@Test
public void updateDocument() {
Optional<Blog> optional = blogRepository.findById(1l);
if (optional.isPresent()) {
Blog blog = optional.get();
blog.setTitle("hello world");
blogRepository.save(blog);
}
}
@Test
public void deleteDocument() {
blogRepository.deleteById(1l);
}
@Test
public 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));
}
@Test
public void testFindByTitle() {
List<Blog> list = blogRepository.findByTitle("测试");//term
list.stream().forEach(System.out::println);
}
@Test
public void testFindByTitleAndContent() {
List<Blog> list = blogRepository.findByTitleAndContent("37", "内容");
list.forEach(e-> System.out.println(e));
}
}
BulkTest.java
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 {
@Autowired
private ElasticsearchRestTemplate template;
@Autowired
private BlogRepository blogRepository;
@Test
public 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"));
}
@Test
public 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);
}
}