import com.xiangshuai.es.entity.Article; import com.xiangshuai.es.entity.Order; import com.xiangshuai.es.service.ArticleService; import com.xiangshuai.es.service.OrderSevice; 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.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 java.util.ArrayList; import java.util.List; /** * @author lqx * @ClassName SpringDataESTest * @description 代码和配套的其他资料都在E(我的网盘\我的笔记):\学习文档子目录压缩\框架\全文检索\Elasticsearch\springdata-elasticsearch版本elasticsearch-5.6.8集群版 * 集群,除了applicationContext.xml中elasticsearch:transport-client标签配了个集群ip,其他的和非集群都一样 * @date 2020/5/28 10:13 * */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:applicationContext.xml") public class SpringDataESTest { @Autowired private ElasticsearchTemplate elasticsearchTemplate; @Autowired private ArticleService articleService; @Autowired private OrderSevice orderSevice; /** * 创建索引 * 配置映射 */ @Test public void createIndex(){ elasticsearchTemplate.createIndex(Article.class); elasticsearchTemplate.putMapping(Article.class); } /** * 删除索引 * 配置映射 */ @Test public void deleteIndex(){ elasticsearchTemplate.deleteIndex(Article.class); } /** * 创建文档 */ @Test public void createDocument(){ Article article = new Article(); article.setId(1); article.setTitle("nihao"); article.setContent("wohao"); articleService.save(article); } /** * 删除文档 */ public void deleteDoc(){ Article article = new Article(); article.setId(1); articleService.delete(article); } /** * 更新文档 */ @Test public void UpdateDocument(){ Article article = new Article(); article.setId(1); article.setTitle("hi"); article.setContent("hello"); articleService.update(article); } /** * 添加所有 */ @Test public void saveAll(){ List<Article> articles = new ArrayList<Article>(); for (int i = 0; i < 100; i++) { Article article = new Article(); article.setId(i); article.setTitle(i+"标题"); article.setContent(i+"内容"); articles.add(article); } articleService.saveAll(articles); } /** * 查询所有 */ @Test public void findAll(){ Iterable<Article> articles = articleService.findAll(); for (Article article : articles) { System.out.println(article); } } /** * 分页查询 */ @Test public void findByPage(){ int page = 1; int size = 5; Iterable<Article> articles = articleService.findByPage(page,size); for (Article article : articles) { System.out.println(article); } } /** * 原生查询 */ @Test public void termNativequery(){ NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder(); nativeSearchQueryBuilder.withQuery(QueryBuilders.termQuery("title","搜索")); nativeSearchQueryBuilder.withPageable(PageRequest.of(1,5)); NativeSearchQuery build = nativeSearchQueryBuilder.build(); List<Article> articles = elasticsearchTemplate.queryForList(build, Article.class); for (Article article : articles) { System.out.println(article); } } /** * 原生查询 */ @Test public void queryStringQuery(){ NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder(); nativeSearchQueryBuilder.withQuery(QueryBuilders.queryStringQuery("搜索")); NativeSearchQuery build = nativeSearchQueryBuilder.build(); List<Article> articles = elasticsearchTemplate.queryForList(build, Article.class); for (Article article : articles) { System.out.println(article); } } @Test public void createIndex1(){ elasticsearchTemplate.createIndex(Order.class); elasticsearchTemplate.putMapping(Order.class); } @Test public void deleteIndex1(){ elasticsearchTemplate.deleteIndex(Order.class); } @Test public void saveDoc(){ Order order = new Order(); order.setId(1000); order.setContent("第一个order"); order.setOrderName("火柴"); orderSevice.addDoc(order); } @Test public void deleteD(){ Order order = new Order(); order.setId(1000); orderSevice.deleteDo(order); } @Test public void addALL() { List<Order> orders=new ArrayList<Order>(); for (int i = 1; i < 100; i++) { Order order = new Order(); order.setId(i); order.setOrderName("商品名"+i); order.setContent("商品描述为"+i); orders.add(order); } orderSevice.addAll(orders); } @Test public void getAll(){ Iterable<Order> all = orderSevice.getAll(); all.forEach((order)->{ System.out.println(order); }); } /** * 原生查询 */ @Test public void queryStringQueryOrder(){ NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder(); nativeSearchQueryBuilder.withQuery(QueryBuilders.queryStringQuery("商品")); NativeSearchQuery build = nativeSearchQueryBuilder.build(); List<Order> Orders = elasticsearchTemplate.queryForList(build, Order.class); for (Order order : Orders) { System.out.println(order); } } /** * 原生查询-根据term也就是mapper,相当于字段查询 * 方法有-- matchQuery:词条匹配,先分词然后在调用termQuery进行匹配(如百度 esmatchQuery即可) TermQuery:词条匹配,不分词 wildcardQuery:通配符匹配 fuzzyQuery:模糊匹配 rangeQuery:范围匹配 booleanQuery:布尔查询 更多方法NativeSearchQueryBuilder点进去看即可 参考https://blog.csdn.net/weixin_43814195/article/details/85281287?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.nonecase matchQuery:会将搜索词分词,再与目标查询字段进行匹配,若分词中的任意一个词与目标字段匹配上,则可查询到。 termQuery:不会对搜索词进行分词处理,而是作为一个整体与目标字段进行匹配,若完全匹配,则可查询到。 */ @Test public void termNativequeryOrder(){ NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder(); nativeSearchQueryBuilder.withQuery(QueryBuilders.termQuery("orderName","商品")); nativeSearchQueryBuilder.withPageable(PageRequest.of(0,5)); NativeSearchQuery build = nativeSearchQueryBuilder.build(); List<Order> orders = elasticsearchTemplate.queryForList(build, Order.class); for (Order order : orders) { System.out.println(order); } } //分页查询 @Test public void findLimit(){ Iterable<Order> orders = orderSevice.findByPage(0, 6); orders.forEach((order)->{ System.out.println(order); }); } //id查询 @Test public void findById(){ Order order = orderSevice.findById(1); System.out.println(order); } //id查询在更新 @Test public void updateById(){ Order order = orderSevice.findById(1); order.setContent("我是更新的"); orderSevice.updateDo(order); System.out.println(order); } }
springdata-elasticsearch版本elasticsearch-5.6.8集群版
最新推荐文章于 2024-03-07 14:31:51 发布