真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringBoot怎樣進(jìn)行整合elasticsearch-創(chuàng)新互聯(lián)

這篇文章給大家介紹Spring Boot怎樣進(jìn)行整合elasticsearch,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

專(zhuān)業(yè)領(lǐng)域包括成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、商城網(wǎng)站開(kāi)發(fā)、微信營(yíng)銷(xiāo)、系統(tǒng)平臺(tái)開(kāi)發(fā), 與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開(kāi)發(fā)公司不同,成都創(chuàng)新互聯(lián)的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷(xiāo)的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶(hù)提供全網(wǎng)互聯(lián)網(wǎng)整合方案。

一、簡(jiǎn)介

我們的應(yīng)用經(jīng)常需要添加檢索功能,開(kāi)源的 ElasticSearch 是目前全文搜索引擎的 選。他可以快速的存儲(chǔ)、搜索和分析海量數(shù)據(jù)。Spring Boot通過(guò)整合Spring Data ElasticSearch為我們提供了非常便捷的檢索功能支持;  
Elasticsearch是一個(gè)分布式搜索服務(wù),提供Restful API,底層基于Lucene,采用 多shard(分片)的方式保證數(shù)據(jù)安全,并且提供自動(dòng)resharding的功能,github 等大型的站點(diǎn)也是采用了ElasticSearch作為其搜索服務(wù),

二、安裝elasticsearch

我們采用 docker鏡像安裝的方式。

#下載鏡像
docker pull elasticsearch
#啟動(dòng)鏡像,elasticsearch 啟動(dòng)是會(huì)默認(rèn)分配2G的內(nèi)存 ,我們啟動(dòng)是設(shè)置小一點(diǎn),防止我們內(nèi)存不夠啟動(dòng)失敗
#9200是elasticsearch 默認(rèn)的web通信接口,9300是分布式情況下,elasticsearch個(gè)節(jié)點(diǎn)通信的端口
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name es01 5c1e1ecfe33a

訪(fǎng)問(wèn) 127.0.0.1:9200 如下圖,說(shuō)明安裝成功

Spring Boot怎樣進(jìn)行整合elasticsearch

三、elasticsearch的一些概念

  • 員工文檔 的形式存儲(chǔ)為例:一個(gè)文檔代表一個(gè)員工數(shù)據(jù)。存儲(chǔ)數(shù)據(jù)到 ElasticSearch 的行為叫做索引 ,但在索引一個(gè)文檔之前,需要確定將文檔存 儲(chǔ)在哪里。

  • 一個(gè) ElasticSearch 集群可以 包含多個(gè)索引 ,相應(yīng)的每個(gè)索引可以包含多個(gè)類(lèi)型。這些不同的類(lèi)型存儲(chǔ)著多個(gè)文檔 ,每個(gè)文檔又有 多個(gè) 屬性

  • 類(lèi)似關(guān)系:

    • 索引-數(shù)據(jù)庫(kù)

    • 類(lèi)型-表

    • 文檔-表中的記錄 – 屬性-列

Spring Boot怎樣進(jìn)行整合elasticsearch

elasticsearch使用可以參早官方文檔,在這里不在講解。

四、整合 elasticsearch

創(chuàng)建項(xiàng)目 springboot-elasticsearch,引入web支持
SpringBoot 提供了兩種方式操作elasticsearch,Jest 和 SpringData。

Jest 操作 elasticsearch

Jest是ElasticSearch的Java HTTP Rest客戶(hù)端。

ElasticSearch已經(jīng)有一個(gè)Java API,ElasticSearch也在內(nèi)部使用它,但是Jest填補(bǔ)了空白,它是ElasticSearch Http Rest接口缺少的客戶(hù)端。

1. pom.xml


    4.0.0

    com.gf
    springboot-elasticsearch
    0.0.1-SNAPSHOT
    jar

    springboot-elasticsearch
    Demo project for Spring Boot

    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.1.RELEASE
         
    

    
        UTF-8
        UTF-8
        1.8
    

    
        
        org.springframework.boot
        spring-boot-starter-data-elasticsearch
    
        
            io.searchbox
            jest
            5.3.3
        

        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

####2. application.properties

spring.elasticsearch.jest.uris=http://127.0.0.1:9200
3. Article
package com.gf.entity;

import io.searchbox.annotations.JestId;

public class Article {

    @JestId
    private Integer id;
    private String author;
    private String title;
    private String content;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder( "{\"Article\":{" );
        sb.append( "\"id\":" )
                .append( id );
        sb.append( ",\"author\":\"" )
                .append( author ).append( '\"' );
        sb.append( ",\"title\":\"" )
                .append( title ).append( '\"' );
        sb.append( ",\"content\":\"" )
                .append( content ).append( '\"' );
        sb.append( "}}" );
        return sb.toString();
    }

}
4. springboot測(cè)試類(lèi)
package com.gf;

import com.gf.entity.Article;
import io.searchbox.client.JestClient;
import io.searchbox.core.Index;
import io.searchbox.core.Search;
import io.searchbox.core.SearchResult;
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.test.context.junit4.SpringRunner;

import java.io.IOException;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootElasticsearchApplicationTests {

    @Autowired
    JestClient jestClient;

    @Test
    public void createIndex() {
        //1. 給ES中索引(保存)一個(gè)文檔
        Article article = new Article();
        article.setId( 1 );
        article.setTitle( "好消息" );
        article.setAuthor( "張三" );
        article.setContent( "Hello World" );

        //2. 構(gòu)建一個(gè)索引
        Index index = new Index.Builder( article ).index( "gf" ).type( "news" ).build();
        try {
            //3. 執(zhí)行
            jestClient.execute( index );
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void search() {
        //查詢(xún)表達(dá)式
        String query = "{\n" +
                "    \"query\" : {\n" +
                "        \"match\" : {\n" +
                "            \"content\" : \"hello\"\n" +
                "        }\n" +
                "    }\n" +
                "}";

        //構(gòu)建搜索功能
        Search search = new Search.Builder( query ).addIndex( "gf" ).addType( "news" ).build();

        try {
            //執(zhí)行
            SearchResult result = jestClient.execute( search );
            System.out.println(result.getJsonString());
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

Jest的更多api ,可以參照github的文檔:https://github.com/searchbox-io/Jest

SpringData 操作 elasticsearch

1. application.properties
spring.data.elasticsearch.cluster-name=elasticsearch
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
2. Book
package com.gf.entity;

@Document( indexName = "gf" , type = "book")
public class Book {
    private Integer id;
    private String bookName;
    private String author;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder( "{\"Book\":{" );
        sb.append( "\"id\":" )
                .append( id );
        sb.append( ",\"bookName\":\"" )
                .append( bookName ).append( '\"' );
        sb.append( ",\"author\":\"" )
                .append( author ).append( '\"' );
        sb.append( "}}" );
        return sb.toString();
    }

}
3. BookRepository
package com.gf.repository;

import com.gf.entity.Book;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

import java.util.List;

public interface BookRepository extends ElasticsearchRepository{

    List findByBookNameLike(String bookName);

}
4. springboot 測(cè)試類(lèi)
package com.gf;

import com.gf.entity.Article;
import com.gf.entity.Book;
import com.gf.repository.BookRepository;
import io.searchbox.client.JestClient;
import io.searchbox.core.Index;
import io.searchbox.core.Search;
import io.searchbox.core.SearchResult;
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.test.context.junit4.SpringRunner;

import java.io.IOException;
import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootElasticsearchApplicationTests {

    @Autowired
    BookRepository bookRepository;

    @Test
    public void createIndex2(){
        Book book = new Book();
        book.setId(1);
        book.setBookName("西游記");
        book.setAuthor( "吳承恩" );
        bookRepository.index( book );
    }

    @Test
    public void useFind() {
        List list = bookRepository.findByBookNameLike( "游" );
        for (Book book : list) {
            System.out.println(book);
        }

    }

}

我們啟動(dòng)測(cè)試 ,發(fā)現(xiàn)報(bào)錯(cuò) 。
Spring Boot怎樣進(jìn)行整合elasticsearch
這個(gè)報(bào)錯(cuò)的原因是springData的版本與我elasticsearch的版本有沖突,下午是springData官方文檔給出的適配表。
Spring Boot怎樣進(jìn)行整合elasticsearch
我們使用的springdata elasticsearch的 版本是3.1.3 ,對(duì)應(yīng)的版本應(yīng)該是6.2.2版本,而我們是的 elasticsearch 是 5.6.9,所以目前我們需要更換elasticsearch的版本為6.X

docker pull elasticsearch:6.5.1
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name es02 鏡像ID

訪(fǎng)問(wèn)127.0.0.1:9200
Spring Boot怎樣進(jìn)行整合elasticsearch

集群名為docker-cluster,所以我們要修改application.properties的配置了

spring.data.elasticsearch.cluster-name=docker-cluster
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300

關(guān)于Spring Boot怎樣進(jìn)行整合elasticsearch就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。


當(dāng)前文章:SpringBoot怎樣進(jìn)行整合elasticsearch-創(chuàng)新互聯(lián)
鏈接分享:http://weahome.cn/article/gseps.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部