最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ElasticSearch整合SpringBoot搭建配置

 更新時間:2023年02月22日 16:35:14   作者:程序員皮卡秋  
這篇文章主要為大家介紹了ElasticSearch整合SpringBoot搭建配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

目前正在出一個Es專題系列教程, 篇幅會較多, 請持續(xù)關(guān)注腳本之家

本節(jié)來給大家講一下在Springboot中如何整合es~

本文偏實戰(zhàn)一些,為了方便演示,本節(jié)示例沿用上節(jié)索引,好了, 廢話不多說直接開整吧~

項目搭建

老規(guī)矩,先建maven項目,下面是我的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>springboot-es-all</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
    </parent>
    <dependencies>
        <!--test-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!--ElasticSearch 客戶端依賴-->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <version>7.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.8.0</version>
        </dependency>
        <!--Hutool依賴-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.4</version>
        </dependency>
        <!--fast-json-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.58</version>
        </dependency>
        <dependency>
            <groupId> org.slf4j </groupId>
            <artifactId> slf4j-api </artifactId>
            <version> 1.6.4 </version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.25</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.1.3.RELEASE</version>
            </plugin>
        </plugins>
    </build>
</project>

這里我使用的是elasticsearch-rest-high-level-client官方客戶端,建議大家盡量用官方的,因為隨著es的不斷升級,很多api都過時了,如果你使用spring-boot-starter-data-elasticsearch這個要依賴社區(qū)去維護,很多新特性你沒法使用到,也會存在安全性問題。

配置客戶端

啟動類:

@SpringBootApplication
public class EsStudyApplication {
    public static void main(String[] args) {
        SpringApplication.run(EsStudyApplication.class, args);
    }
}

配置文件 application.yml:

server:
  port: 9000
elasticsearch:
  host: 0.0.0.0
  port: 9200
  username:
  password:

客戶端配置 config.EsClientConfig:

@Configuration
public class EsClientConfig {
    @Value("${elasticsearch.host}")
    private String host;
    @Value("${elasticsearch.port}")
    private int port;
    @Value("${elasticsearch.username}")
    private String userName;
    @Value("${elasticsearch.password}")
    private String password;
    @Bean
    public RestHighLevelClient restHighLevelClient() {
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
        RestHighLevelClient restHighLevelClient = new RestHighLevelClient(
                RestClient.builder(new HttpHost( host, port, "http")).setHttpClientConfigCallback(httpClientBuilder -&gt; {
                    httpClientBuilder.setMaxConnTotal(500);
                    httpClientBuilder.setMaxConnPerRoute(300);
                    return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                })
        );
        return restHighLevelClient;
    }
}

然后客戶端我們就配好了,客戶端的配置其實還有很多,感興趣的同學(xué)自行查閱。后續(xù)使用的時候,直接導(dǎo)入RestHighLevelClient實例就好了

接著啟動它,如果控制沒有報錯,說明配置沒啥問題了, 記得要開啟es服務(wù)~

索引API初探 & Index API

下面我們寫一點測試用例,來驗證我們是否可以操作es,為了方便演示,這里直接使用SpringBootTest來測試,大家平時在寫springboot項目,類測試的時候也可以這么做

ping

新建api.IndexApi,調(diào)用ping()方法來測試是否鏈接成功:

@Slf4j
@SpringBootTest
public class IndexApi {
    /**
     * es 索引
     */
    public static final String index = "study";
    @Autowired
    private RestHighLevelClient client;
    @Test
    public void ping() throws IOException {
        if(client.ping(RequestOptions.DEFAULT)) {
            log.info("鏈接成功");
        }else {
            log.info("鏈接失敗 !");
        }
    }
}    

點擊IndexApi左上角的綠色箭頭啟動測試用例, 如果報錯,嘗試添加以下 注解

@RunWith(SpringRunner.class)
@SpringBootTest(classes = { EsStudyApplication.class })
public class IndexApi {....}

返回:

鏈接成功

說明客戶端es服務(wù)端是通的

創(chuàng)建索引 & create

通過前面的學(xué)習(xí),有了一定的基礎(chǔ)之后,回到代碼中其實就是調(diào)調(diào)方法,因為你知道了這個代碼的邏輯做了什么操作。下面來看下如何創(chuàng)建索引:

/**
     * 創(chuàng)建索引
     */
    @Test
    public void createIndex() throws IOException {
        CreateIndexRequest request = new CreateIndexRequest(index);
        CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
        log.info("創(chuàng)建索引 ===> "+ JSONObject.toJSONString(createIndexResponse)); // 創(chuàng)建索引 ===> {"acknowledged":true,"fragment":false,"shardsAcknowledged":true}
    }

大家可以返回到kibana中查看索引是否被創(chuàng)建,從而驗證代碼執(zhí)行是否成功

添加別名:

// alias
request.alias(new Alias("study_alias"));

索引設(shè)置settings:

// index settings
request.settings(
        Settings.builder()
                .put("index.number_of_shards", 3)
                .put("index.number_of_replicas", 2)
);

索引映射mapping:

 // index mappings
//        {
//            "mapping": {
//            "_doc": {
//                "properties": {
//                    "name": {
//                        "type": "text"
//                    }
//                }
//            }
//        }
//        }
XContentBuilder builder = XContentFactory.jsonBuilder();
builder.startObject();
{
    builder.startObject("properties");
    {
        builder.startObject("name");
        {
            builder.field("type", "text");
        }
        builder.endObject();
    }
    builder.endObject();
}
builder.endObject();
request.mapping(builder);

設(shè)置請求超時時間:

// 請求設(shè)置
request.setTimeout(TimeValue.timeValueMinutes(1));

索引是否存在 & exist

 /**
    * 判斷索引是否存在
    * @throws IOException
    */
@Test
public void existIndex() throws IOException {
    GetIndexRequest request = new GetIndexRequest(index);
    boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
    log.info("索引{}存在 ===> {}", index, exists);
}

刪除索引

 /**
    * 刪除索引
    * @throws IOException
    */
@Test
public void delIndex() throws IOException {
    DeleteIndexRequest request = new DeleteIndexRequest(index);
    AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);
    log.info("刪除索引 ===> {}", JSONObject.toJSONString(delete)); // 刪除索引 ===> {"acknowledged":true,"fragment":false}
}

結(jié)束語

下節(jié)帶大家看下文檔操作相關(guān)的api,也是我們業(yè)務(wù)中使用最多的api~

更多關(guān)于ElasticSearch整合SpringBoot的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring的RestTemplata使用的具體方法

    Spring的RestTemplata使用的具體方法

    本篇文章主要介紹了Spring的RestTemplata使用的具體方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • httpclient提交json參數(shù)的示例詳解

    httpclient提交json參數(shù)的示例詳解

    httpclient使用post提交json參數(shù),和使用表單提交區(qū)分,本文結(jié)合示例代碼講解的非常詳細,補充介紹了HttpClient請求傳json參數(shù)的案例代碼,感興趣的朋友一起看看吧
    2024-02-02
  • 淺析JVM如何處理Java中的精度轉(zhuǎn)換

    淺析JVM如何處理Java中的精度轉(zhuǎn)換

    在Java編程中,理解不同數(shù)據(jù)類型之間的轉(zhuǎn)換機制對于寫出高效、正確的代碼至關(guān)重要,本文將詳細探討Java中的精度轉(zhuǎn)換機制,有需要的小伙伴可以了解下
    2025-03-03
  • Java實體類中Set按照對象的某個字段對set排序

    Java實體類中Set按照對象的某個字段對set排序

    這篇文章主要介紹了Java實體類中Set按照對象的某個字段對set排序,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-06-06
  • Java Lambda表達式和函數(shù)式接口實例分析

    Java Lambda表達式和函數(shù)式接口實例分析

    這篇文章主要介紹了Java Lambda表達式和函數(shù)式接口,結(jié)合實例形式分析了Java8 Lambda表達式和函數(shù)式接口相關(guān)原理、用法及操作注意事項,需要的朋友可以參考下
    2019-09-09
  • 使用 Redis 緩存實現(xiàn)點贊和取消點贊的示例代碼

    使用 Redis 緩存實現(xiàn)點贊和取消點贊的示例代碼

    這篇文章主要介紹了使用 Redis 緩存實現(xiàn)點贊和取消點贊的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • java調(diào)用c程序通信示例代碼

    java調(diào)用c程序通信示例代碼

    這篇文章主要介紹了java調(diào)用c程序通信示例,大家參考使用吧
    2013-12-12
  • springboot連接sqllite遇到的坑及解決

    springboot連接sqllite遇到的坑及解決

    這篇文章主要介紹了springboot連接sqllite遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 基于jvm java內(nèi)存區(qū)域的介紹

    基于jvm java內(nèi)存區(qū)域的介紹

    下面小編就為大家?guī)硪黄趈vm java內(nèi)存區(qū)域的介紹。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • springboot @JsonSerialize的使用講解

    springboot @JsonSerialize的使用講解

    這篇文章主要介紹了springboot @JsonSerialize的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評論

门头沟区| 晴隆县| 静海县| 屏南县| 洛南县| 克东县| 荥阳市| 龙川县| 太康县| 绥阳县| 白沙| 盈江县| 志丹县| 铜鼓县| 甘南县| 科尔| 项城市| 孟村| 清涧县| 黄冈市| 凭祥市| 灵寿县| 平泉县| 镇赉县| 屯昌县| 西青区| 晋江市| 眉山市| 廊坊市| 砀山县| 祁阳县| 灯塔市| 南丹县| 伽师县| 三门县| 威远县| 宜兰市| 丰镇市| 大庆市| 黎平县| 三原县|