美文网首页
Elasticsearch学习篇第三章:Elasticsearc

Elasticsearch学习篇第三章:Elasticsearc

作者: thinking2019 | 来源:发表于2020-09-12 15:46 被阅读0次

    elasticsearch的囊括了很多东西,有分析器、插件、语法、数据组成等等部分,但是我还是很想先看看在Java方面的实际应用,毕竟还是需要实践中使用的,至于其他部分会整理分类地总结出来

    其实我写的都不是我官网文档、实验出来的,而是由很多篇文章整理归纳出来的,不知道算不算抄袭,绝对不会完全相同的复制粘贴,总结归纳也是一种学习方式

    TransportClient

    TransportClient可以支持2.x,5.x版本,TransportClient将会在Elasticsearch 7.0弃用并在8.0中完成删除,使用HTTP请求而不是Java序列化请求

    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>transport</artifactId>
        <version>7.9.1</version>
    </dependency>
    
    
    public TransportClient transportClient() {
        TransportClient transportClient = null;
        try {
            // 配置信息
            Settings esSetting = Settings.builder()
                    .put("cluster.name", clusterName) //集群名字
                    .put("client.transport.sniff", true)//增加嗅探机制,找到ES集群
                    .put("thread_pool.search.size", Integer.parseInt(poolSize))//增加线程池个数,暂时设为5
                    .build();
            //配置信息Settings自定义
            transportClient = new PreBuiltTransportClient(esSetting);
            TransportAddress transportAddress = new TransportAddress(InetAddress.getByName(hostName), Integer.valueOf(port));
            transportClient.addTransportAddresses(transportAddress);
        } catch (Exception e) {
            log.error("elasticsearch TransportClient create error!!", e);
        }
        return transportClient;
    }
    

    RestClient

    包含Java High Level REST Client

    ElasticsearchTemplate和ElasticsearchRestTemplate实现ElasticsearchOperations接口

    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-high-level-client</artifactId>
        <version>7.9.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-elasticsearch</artifactId>
    </dependency>
    
    @Bean
    public RestHighLevelClient elasticsearchClient(){
        //获取es连接(不需要密码可以直接连接)
        //private RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient
        // .builder(new HttpHost(hostname, port, protocol)));
    
        // 账号密码
        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials(username, password));
        // 初始化
        RestClientBuilder builder = RestClient.builder(hostList.toArray(new HttpHost[0]));
        // 异步httpclient连接延时配置
        builder.setRequestConfigCallback(new RequestConfigCallback() {
            @Override
            public Builder customizeRequestConfig(Builder requestConfigBuilder) {
                requestConfigBuilder.setConnectTimeout(connectTimeOut);
                requestConfigBuilder.setSocketTimeout(socketTimeOut);
                requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeOut);
                return requestConfigBuilder;
            }
        });
        // 异步httpclient连接数配置
        builder.setHttpClientConfigCallback(new HttpClientConfigCallback() {
            @Override
            public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                httpClientBuilder.setMaxConnTotal(maxConnectNum);
                httpClientBuilder.setMaxConnPerRoute(maxConnectPerRoute);
                httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                return httpClientBuilder;
            }
        });
        RestHighLevelClient client = new RestHighLevelClient(builder);
        return client;
    }
    

    Jest

    Jest是Java社区开发的,是Elasticsearch的Java Http Rest客户端,一定延迟

    <dependency>
        <groupId>io.searchbox</groupId>
        <artifactId>jest</artifactId>
        <version>6.3.1</version>
    </dependency>
    
    @Bean
    public JestClient getJestClient(){
        List<String> uris = Arrays.asList(url.split(","));
        JestClientFactory jestClientFactory = new JestClientFactory();
        jestClientFactory.setHttpClientConfig(new HttpClientConfig
                .Builder(uris)
                .connTimeout(10000)
                .readTimeout(10000)
                .maxConnectionIdleTime(1500L, TimeUnit.MILLISECONDS)
                .multiThreaded(true)
                .build());
        return jestClientFactory.getObject();
    }
    

    Spring Data Elasticsearch

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>
    
    public interface ItemRepository extends ElasticsearchRepository<Item,Long> {}
    

    项目地址

    https://gitee.com/hzy100java/springboot-elasticsearch.git
    

    除了这些方法外,应该还有query的查询条件组装、QueryDsl方法

    下次写elasticsearch的可视化和QueryDsl

    相关文章

      网友评论

          本文标题:Elasticsearch学习篇第三章:Elasticsearc

          本文链接:https://www.haomeiwen.com/subject/sppwektx.html