zoukankan      html  css  js  c++  java
  • elasticsearchTemplate that could not be found

    ***************************
    APPLICATION FAILED TO START
    ***************************

    Description:

    Method mvcConversionService in org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration required a bean named 'elasticsearchTemplate' that could not be found.


    Action:

    Consider defining a bean named 'elasticsearchTemplate' in your configuration.

    查找原因 (原来以为是'elasticsearch的版本问题,后面发现了项目的问题)

    一般创建的maven 产生的

    application.yml的配置文件

    server:
      port: 19006
    spring:
      application:
        name: essearch-service
      data:
        elasticsearch:
          cluster-name: elasticsearch
          cluster-nodes: 127.0.0.1:9300
    #      local: false
          repositories:
            enabled: true
    package com.leyou.es.pojo;
    
    import lombok.Data;
    import org.springframework.data.annotation.Id;
    import org.springframework.data.elasticsearch.annotations.Document;
    import org.springframework.data.elasticsearch.annotations.Field;
    import org.springframework.data.elasticsearch.annotations.FieldType;
    //import org.springframework.data.elasticsearch.annotations.Document;
    //import org.springframework.data.elasticsearch.annotations.Field;
    //import org.springframework.data.elasticsearch.annotations.FieldType;
    
    /**
     * @author :cza
     * @date :2020/5/12 12:21
     * @description :
     * @modyified By:
     */
    @Data
    @Document(indexName = "heima3",type = "item",shards = 1,replicas = 0)
    public class Item {
        @Id
        @Field(type= FieldType.Integer)
        private Integer id;
        @Field(type= FieldType.Text,analyzer = "ik_smart")
        private String title; //标题
        @Field(type= FieldType.Keyword)
        private String category; //分类
    
        @Field(type= FieldType.Keyword)
        private String brand; //品牌
        @Field(type= FieldType.Double)
        private Double price; //价格
    
        public Item(Integer id, String title, String category, String brand, Double price, String images) {
            this.id = id;
            this.title = title;
            this.category = category;
            this.brand = brand;
            this.price = price;
            this.images = images;
        }
    
        public Item() {
        }
    
        @Field(type= FieldType.Keyword,index = false)
        private  String images; //图片地址
    }
    package com.leyou.es.repository;
    
    import com.leyou.es.pojo.Item;
    import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
    
    import java.awt.print.Pageable;
    import java.util.List;
    
    /**
     * @author :cza
     * @date :2020/5/13 1:59
     * @description :
     * @modyified By:
     */
    public interface ItemRepository extends ElasticsearchRepository<Item,Integer> {
    
    //   List<Item> findByPriceBetween(Double begin, Double end);
    //    List<Item> findBypNameOrPrice(String name, Integer price);
    //    List<Item> findByName(String name, Pageable page);
    }
    package com.leyou.es;
    
    
    
    import com.leyou.es.pojo.Item;
    import org.elasticsearch.search.aggregations.AggregationBuilders;
    import org.elasticsearch.search.aggregations.Aggregations;
    import org.elasticsearch.search.aggregations.bucket.terms.StringTerms;
    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.ElasticsearchTemplate;
    import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
    import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import java.util.List;
    
    /**
     * @author :cza
     * @date :2020/5/12 12:29
     * @description :
     * @modyified By:
     */
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class EsTest {
    
        @Autowired
        private ElasticsearchTemplate elasticsearchTemplate;
        //@Autowired
        //private ItemRepository itemRepository;
        //@Autowired
        //private ElasticsearchRestTemplate elasticsearchRestTemplate;
        @Test
        public  void testCreateIndex(){
            //创建索引库
            elasticsearchTemplate.createIndex(Item.class);
            //映射关系
            elasticsearchTemplate.putMapping(Item.class);
        /*  //创建索引库
            elasticsearchRestTemplate.createIndex(Item.class);
            //映射关系
            elasticsearchRestTemplate.putMapping(Item.class);*/
        }
    
    //    /**
    //     * 插上全部
    //     */
    //      @Test
    //    public  void insertIndexAll(){
    //          List<Item> list=new ArrayList<>();
    //          list.add(new Item(Integer.valueOf("1"),"坚果手机","手机","锤子",2699.00,"http://www.baidu.com"));
    //          list.add(new Item(Integer.valueOf("2"),"华为Mate10手机","手机","华为",3699.00,"http://www.baidu.com"));
    //          list.add(new Item(Integer.valueOf("3"),"小米Mi10手机","手机","小米",3099.00,"http://www.baidu.com"));
    //          list.add(new Item(Integer.valueOf("3"),"小米Mi8手机","手机","小米",2399.00,"http://www.baidu.com"));
    //
    //          itemRepository.saveAll(list);
    //    }
    //
    //    /**
    //     * 查询所有
    //     */
    //    @Test
    //    public  void testFind(){
    //        Iterable<Item> all = itemRepository.findAll();
    //        for (Item item :all){
    //            System.out.println("item= "+item);
    //        }
    //    }
    //
    //    /**
    //     * 根据价格查询
    //     */
    //    @Test
    //    public  void testFindByPrice(){
    //        Iterable<Item> all = itemRepository.findByPriceBetween(2000d,3500d);
    //        for (Item item :all){
    //            System.out.println("item= "+item);
    //        }
    //    }
    //    @Test
    //    public void search(){
    //        //构建查询条件
    //        NativeSearchQueryBuilder queryBuilder=new NativeSearchQueryBuilder();
    //        //结果过滤
    //        queryBuilder.withSourceFilter(new FetchSourceFilter(new String[]{"id","title","price"},null));
    //        //添加基本分词查询
    //        queryBuilder.withQuery(QueryBuilders.matchQuery("title","小米"));
    //        //排序
    //        queryBuilder.withSort(SortBuilders.fieldSort("price").order(SortOrder.DESC));
    //        //分页
    //        queryBuilder.withPageable( PageRequest.of(1,20));
    //        Page<Item> items = this.itemRepository.search(queryBuilder.build());
    //        long totalcount = items.getTotalElements();
    //        System.out.println("totalcount="+totalcount);
    //        for (Item item:items){
    //            System.out.println(item);
    //        }
    //        List<Item> list = items.getContent();
    //        for (Item item :list){
    //            System.out.println("item="+list);
    //        }
    //    }
    
        @Test
        public  void testAgg(){
            NativeSearchQueryBuilder queryBuilder=new NativeSearchQueryBuilder();
            String aggName="popularBrand";
            queryBuilder.addAggregation(AggregationBuilders.terms(aggName).field("brand"));
            //查询并返回聚合结果
            AggregatedPage<Item> result = elasticsearchTemplate.queryForPage(queryBuilder.build(), Item.class);
            //解析聚合
            Aggregations aggs = result.getAggregations();
    
            //获取指定名称的聚合
            StringTerms terms = aggs.get(aggName);
            List<StringTerms.Bucket> buckets = terms.getBuckets();
            for (StringTerms.Bucket bucket:buckets){
                System.out.println("bucket.getKeyAsString="+bucket.getKeyAsString());
                System.out.println("bucket.getDocCount="+bucket.getDocCount());
            }
        }
    }
      <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.4.RELEASE</version>
            <relativePath></relativePath>
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <spring-cloud.version>Finchley.SR1</spring-cloud.version>
            <mapper.starter.version>2.0.3</mapper.starter.version>
        </properties>
        <dependencyManagement>
            <dependencies>
                <!--springcloud-->
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
                <!--通用Mapper启动器-->
                <dependency>
                    <groupId>tk.mybatis</groupId>
                    <artifactId>mapper-spring-boot-starter</artifactId>
                    <version>${mapper.starter.version}</version>
                </dependency>
                <!--分页助手启动器-->
                <dependency>
                    <groupId>com.github.pageHelper</groupId>
                    <artifactId>pagehelper-spring-boot-starter</artifactId>
                    <version>${pageHelper.starter.version}</version>
                </dependency>
                <!--mysql驱动-->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>${mysql.version}</version>
                </dependency>
                <!--FASTDFS客户端-->
                <dependency>
                    <groupId>com.github.tobato</groupId>
                    <artifactId>fastdfs-client</artifactId>
                    <version>${fastDFS.client.version}</version>
                </dependency>
            </dependencies>
        </dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.4</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-core</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <!--       <version>5.0.6.RELEASE</version>-->
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>

    es的版本下载

    下载 elasticsearch 5.5.0 版本
    https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.zip
    elasticsearch-analysis-ik 5.5.0 版本
    https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.0/elasticsearch-analysis-ik-5.5.0.zip

    查询elasticsearch-analysis-ik 版本,比如5.6.3
    https://github.com/medcl/elasticsearch-analysis-ik/releases?after=v5.6.3

    下载地址:https://files.cnblogs.com/files/zhian/es-demotest.zip

  • 相关阅读:
    潜水员
    混合背包
    多重背包问题
    归并排序——最省时的排序
    HDU 1556 Color the ball
    2016 ACM/ICPC Asia Regional Dalian Online Football Games
    poj 2352 Stars
    poj 2299 Ultra-QuickSort
    关于原码反码补码以及位元算
    2016 湖南省省赛 Problem A: 2016
  • 原文地址:https://www.cnblogs.com/zhian/p/12892680.html
Copyright © 2011-2022 走看看