zoukankan      html  css  js  c++  java
  • 30、springboot与检索(2)

    项目中进行整合:

    1、整合 新建项目加入依赖(NoSql)

    springboot默认使用SpringDate ElasticSearch模块进行操作
     
    查看自动配置类:

    SpringBoot默认支持两种技术来和ES交互“
    1、Jest

     

    2、SpringDate ElasticSearch
    @Bean
    @ConditionalOnMissingBean
    public TransportClient elasticsearchClient() throws Exception {
        TransportClientFactoryBean factory = new TransportClientFactoryBean();
        factory.setClusterNodes(this.properties.getClusterNodes());
        factory.setProperties(this.createProperties());
        factory.afterPropertiesSet();
        return factory.getObject();
    }
    
    private Properties createProperties() {
        Properties properties = new Properties();
        properties.put("cluster.name", this.properties.getClusterName());
        properties.putAll(this.properties.getProperties());
        return properties;
    }

     

    public class ElasticsearchProperties {
        private String clusterName = "elasticsearch";
        private String clusterNodes;
        private Map<String, String> properties = new HashMap();

     

    @Bean
    @ConditionalOnMissingBean
    @ConditionalOnBean({Client.class})
    public ElasticsearchTemplate elasticsearchTemplate(Client client, ElasticsearchConverter converter) {
        try {
            return new ElasticsearchTemplate(client, converter);
        } catch (Exception var4) {
            throw new IllegalStateException(var4);
        }
    }

    2、测试

    1、Jest方式

     依赖:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/io.searchbox/jest -->
    <dependency>
        <groupId>io.searchbox</groupId>
        <artifactId>jest</artifactId>
        <version>5.3.4</version>
    </dependency>

     

    @Bean(
        destroyMethod = "shutdownClient"
    )
    @ConditionalOnMissingBean
    public JestClient jestClient() {
        JestClientFactory factory = new JestClientFactory();
        factory.setHttpClientConfig(this.createHttpClientConfig());
        return factory.getObject();
    }
    相关的配置
    private List<String> uris = new ArrayList(Collections.singletonList("http://localhost:9200"));
     
    配置文件:
    spring.elasticsearch.jest.uris=http://192.168.1.121:9200

    pojo类:

    public class Article {
        //标识为主键
        //@JestId
        private Integer id;
        private String  author;
        private String title;
    }

    测试类:

    @Autowired
    JestClient jestClient;
    
    @Test
    public void contextLoads() {
        System.out.println(jestClient);
        //给es保存索引文档
        Article article = new Article();
        article.setId(1);
        article.setAuthor("mrchengs");
        article.setTitle("EsTest");
    
        String id = String.valueOf(article.getId());
        //构建一个索引功能
        //new Index.Builder(article).index("cr").type("msg").id()
        //cr是索引   msg是类型  此时也是可以是设置id的,但是在类中已经进行了设置
        Index index = new Index.Builder(article).index("cr").type("msg").id(id).build();
    
    
        try {
            jestClient.execute(index);
        } catch (IOException e) {
            e.printStackTrace();
        }
    
    }
    此时的可以查看结果:

    测试搜索功能的实现:

     

    {"took":656,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":1,"max_score":0.2876821,"hits":[{"_index":"cr","_type":"msg","_id":"1","_score":0.2876821,"_source":{"id":1,"author":"mrchengs","title":"EsTest"}}]}}

     2、SpringDate ElasticSearch

     待更新.......

  • 相关阅读:
    Python学习之旅—生成器对象的send方法详解
    对集合多列进行求和方法的选择
    23种设计模式
    这一天,我真正的体会到。。。
    火狐浏览器导出EXCEL 表格,文件名乱码问题
    K-fold Train Version3
    K-fold Train Version2
    K-fold Train
    Confusion matrix
    Kaggle Solutions
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10457084.html
Copyright © 2011-2022 走看看