springdata-elasticsearch版本elasticsearch-5.6.8集羣版

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);
    }







}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章