美文网首页
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