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,相當於字段查詢 */ @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集羣版
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.