搭建elasticsearch测试工程
Spring Data Elasticsearch
Elasticsearch提供的Java客戶端有一些不太方便的地方:
-
很多地方需要拼接Json字符串,在java中拼接字符串有多恐怖你應(yīng)該懂的
-
需要自己把對(duì)象序列化為json存儲(chǔ)
-
查詢到結(jié)果也需要自己反序列化為對(duì)象
因此,我們這里就不講解原生的Elasticsearch客戶端API了。
而是學(xué)習(xí)Spring提供的套件:Spring Data Elasticsearch。
?
簡(jiǎn)介
Spring Data Elasticsearch是Spring Data項(xiàng)目下的一個(gè)子模塊。
查看 Spring Data的官網(wǎng):http://projects.spring.io/spring-data/
Spring Data的使命是為數(shù)據(jù)訪問(wèn)提供熟悉且一致的基于Spring的編程模型,同時(shí)仍保留底層數(shù)據(jù)存儲(chǔ)的特殊特性。
它使得使用數(shù)據(jù)訪問(wèn)技術(shù),關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù),map-reduce框架和基于云的數(shù)據(jù)服務(wù)變得容易。這是一個(gè)總括項(xiàng)目,其中包含許多特定于給定數(shù)據(jù)庫(kù)的子項(xiàng)目。這些令人興奮的技術(shù)項(xiàng)目背后,是由許多公司和開(kāi)發(fā)人員合作開(kāi)發(fā)的。
Spring Data 的使命是給各種數(shù)據(jù)訪問(wèn)提供統(tǒng)一的編程接口,不管是關(guān)系型數(shù)據(jù)庫(kù)(如MySQL),還是非關(guān)系數(shù)據(jù)庫(kù)(如Redis),或者類似Elasticsearch這樣的索引數(shù)據(jù)庫(kù)。從而簡(jiǎn)化開(kāi)發(fā)人員的代碼,提高開(kāi)發(fā)效率。
包含很多不同數(shù)據(jù)操作的模塊:
Spring Data Elasticsearch的頁(yè)面:https://projects.spring.io/spring-data-elasticsearch/
特征:
-
支持Spring的基于@Configuration的java配置方式,或者XML配置方式
-
提供了用于操作ES的便捷工具類ElasticsearchTemplate。包括實(shí)現(xiàn)文檔到POJO之間的自動(dòng)智能映射。
-
利用Spring的數(shù)據(jù)轉(zhuǎn)換服務(wù)實(shí)現(xiàn)的功能豐富的對(duì)象映射
-
基于注解的元數(shù)據(jù)映射方式,而且可擴(kuò)展以支持更多不同的數(shù)據(jù)格式
-
根據(jù)持久層接口自動(dòng)生成對(duì)應(yīng)實(shí)現(xiàn)方法,無(wú)需人工編寫(xiě)基本操作代碼(類似mybatis,根據(jù)接口自動(dòng)得到實(shí)現(xiàn))。當(dāng)然,也支持人工定制查詢
創(chuàng)建Demo工程
我們使用spring腳手架新建一個(gè)demo,學(xué)習(xí)Elasticsearch
pom依賴:
<?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>com.learn.demo</groupId><artifactId>elasticsearch</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>elasticsearch</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.6.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><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><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build> </project>application.yml文件配置:
spring:data:elasticsearch:cluster-name: elasticsearchcluster-nodes: 192.168.56.101:9300實(shí)體類及注解
首先我們準(zhǔn)備好實(shí)體類:
public class Item {Long id;String title; //標(biāo)題String category;// 分類String brand; // 品牌Double price; // 價(jià)格String images; // 圖片地址 }映射
Spring Data通過(guò)注解來(lái)聲明字段的映射屬性,有下面的三個(gè)注解:
-
@Document 作用在類,標(biāo)記實(shí)體類為文檔對(duì)象,一般有四個(gè)屬性
-
indexName:對(duì)應(yīng)索引庫(kù)名稱
-
type:對(duì)應(yīng)在索引庫(kù)中的類型
-
shards:分片數(shù)量,默認(rèn)5
-
replicas:副本數(shù)量,默認(rèn)1
-
-
@Id 作用在成員變量,標(biāo)記一個(gè)字段作為id主鍵
-
@Field 作用在成員變量,標(biāo)記為文檔的字段,并指定字段映射屬性:
-
type:字段類型,取值是枚舉:FieldType
-
index:是否索引,布爾類型,默認(rèn)是true
-
store:是否存儲(chǔ),布爾類型,默認(rèn)是false
-
analyzer:分詞器名稱:ik_max_word
-
示例:
@Document(indexName = "item",type = "docs", shards = 1, replicas = 0) public class Item {@Idprivate Long id;@Field(type = FieldType.Text, analyzer = "ik_max_word")private String title; //標(biāo)題@Field(type = FieldType.Keyword)private String category;// 分類@Field(type = FieldType.Keyword)private String brand; // 品牌@Field(type = FieldType.Double)private Double price; // 價(jià)格@Field(index = false, type = FieldType.Keyword)private String images; // 圖片地址 }?
超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的搭建elasticsearch测试工程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。