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

  • 相关阅读:
    欧拉公式
    isap的一些想法
    错误合集
    Hello World
    PAT (Advanced Level) Practice 1068 Find More Coins
    PAT (Advanced Level) 1087 All Roads Lead to Rome
    PAT (Advanced Level) 1075 PAT Judge
    PAT (Advanced Level) 1067 Sort with Swap(0, i)
    PAT (Advanced Level) 1017 Queueing at Bank
    PAT (Advanced Level) 1025 PAT Ranking
  • 原文地址:https://www.cnblogs.com/zhian/p/12892680.html
Copyright © 2011-2022 走看看