您好,登錄后才能下訂單哦!
這篇文章給大家介紹使用SpringBoot如何實現對ElasticSearch進行整合,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
一、實體設計:
Tutorial.java
public class Tutorial implements Serializable{ private Long id; private String name;//教程名稱 //setters and getters //toString }
Author.java
public class Author implements Serializable{ /** * 作者id */ private Long id; /** * 作者姓名 */ private String name; /** * 作者簡介 */ private String remark; //setters and getters //toString }
Article.java
public class Article implements Serializable{ private Long id; /**標題*/ private String title; /**摘要*/ private String abstracts; /**內容*/ private String content; /**發表時間*/ private Date postTime; /**點擊率*/ private Long clickCount; /**作者*/ private Author author; /**所屬教程*/ private Tutorial tutorial; //setters and getters //toString }
二、整合SpringBoot與ElasticSearch
1、引入相應的依賴
pom.xml
<parent> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-parent </artifactId> <version> 1.3.0.RELEASE </version> </parent> <dependencies> <!-- 添加 web 應用的依賴 --> <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-web </artifactId> </dependency> <!-- 添加 spring-data-elasticsearch的依賴 --> <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-data-elasticsearch </artifactId> </dependency> <dependency> <groupId> org.springframework.boot</groupId> <artifactId> spring-boot-starter-test </artifactId> </dependency> </dependencies>
2、修改配置文件
application.yml
spring: data: elasticsearch: cluster-name: #默認為elasticsearch cluster-nodes: #配置es節點信息,逗號分隔,如果沒有指定,則啟動ClientNode properties: path: logs: ./elasticsearch/log #elasticsearch日志存儲目錄 data: ./elasticsearch/data #elasticsearch數據存儲目錄
這些配置的屬性,最終會設置到ElasticsearchProperties這個實體中。
3、為實體添加ElascticSearch的注解
Spring-data-elasticSearch提供了一些注解來幫助我們快速針對實體建立索引。
因為我們希望Article作為我們文章的搜索入口,所以我們在Article類上添加@Document注解。
@Document(indexName="projectname",type="article",indexStoreType="fs",shards=5,replicas=1,refreshInterval="-1") public class Article implements Serializable{ .... }
默認情況下,添加@Document注解會對實體中的所有屬性建立索引,由于本教程是講解如何整合,并不是專門講解ElasticSearch,故對于其他注解不再講解。
4、建立搜索類
我們只要編寫一個接口ArticleSearchRepository,來繼承Spring-data-elasticSearch提供的ElasticsearchRepository即可。
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import com.tianshouzhi.springbootstudy.domain.Article; //泛型的參數分別是實體類型和主鍵類型 public interface ArticleSearchRepository extends ElasticsearchRepository<Article, Long>{ }
5、單元測試
5.1、創建索引
@RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = Application.class) public class ElasticSearchTest { @Autowired private ArticleSearchRepository articleSearchRepository; @Test public void testSaveArticleIndex(){ Author author=new Author(); author.setId(1L); author.setName("tianshouzhi"); author.setRemark("java developer"); Tutorial tutorial=new Tutorial(); tutorial.setId(1L); tutorial.setName("elastic search"); Article article =new Article(); article.setId(1L); article.setTitle("springboot integreate elasticsearch"); article.setAbstracts("springboot integreate elasticsearch is very easy"); article.setTutorial(tutorial); article.setAuthor(author); article.setContent("elasticsearch based on lucene," + "spring-data-elastichsearch based on elaticsearch" + ",this tutorial tell you how to integrete springboot with spring-data-elasticsearch"); article.setPostTime(new Date()); article.setClickCount(1L); articleSearchRepository.save(article); } }
運行單元測試,項目根目錄下出現:
說明我們索引已經創建成功。
5.2測試搜索:
@Test public void testSearch(){ String queryString="springboot";//搜索關鍵字 QueryStringQueryBuilder builder=new QueryStringQueryBuilder(queryString); Iterable<Article> searchResult = articleSearchRepository.search(builder); Iterator<Article> iterator = searchResult.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } }
運行單元測試,控制臺輸出
說明搜索成功。讀者可以嘗試其他的搜索關鍵字進行搜索。
說明:以上方式是SpringBoot與ElasticSearch進行本地整合,即將ElasticSearch內嵌在應用,如果我們搭建了ElasticSearch集群,只需要將配置改為如下配置即可:
spring: data: elasticsearch: cluster-nodes:115.28.65.149:9300 #配置es節點信息,逗號分隔,如果沒有指定,則啟動ClientNode
關于使用SpringBoot如何實現對ElasticSearch進行整合就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。