搭建elasticsearch测试工程
Spring Data Elasticsearch
Elasticsearch提供的Java客戶端有一些不太方便的地方:
-
很多地方需要拼接Json字符串,在java中拼接字符串有多恐怖你應該懂的
-
需要自己把對象序列化為json存儲
-
查詢到結果也需要自己反序列化為對象
因此,我們這里就不講解原生的Elasticsearch客戶端API了。
而是學習Spring提供的套件:Spring Data Elasticsearch。
?
簡介
Spring Data Elasticsearch是Spring Data項目下的一個子模塊。
查看 Spring Data的官網:http://projects.spring.io/spring-data/
Spring Data的使命是為數據訪問提供熟悉且一致的基于Spring的編程模型,同時仍保留底層數據存儲的特殊特性。
它使得使用數據訪問技術,關系數據庫和非關系數據庫,map-reduce框架和基于云的數據服務變得容易。這是一個總括項目,其中包含許多特定于給定數據庫的子項目。這些令人興奮的技術項目背后,是由許多公司和開發人員合作開發的。
Spring Data 的使命是給各種數據訪問提供統一的編程接口,不管是關系型數據庫(如MySQL),還是非關系數據庫(如Redis),或者類似Elasticsearch這樣的索引數據庫。從而簡化開發人員的代碼,提高開發效率。
包含很多不同數據操作的模塊:
Spring Data Elasticsearch的頁面:https://projects.spring.io/spring-data-elasticsearch/
特征:
-
支持Spring的基于@Configuration的java配置方式,或者XML配置方式
-
提供了用于操作ES的便捷工具類ElasticsearchTemplate。包括實現文檔到POJO之間的自動智能映射。
-
利用Spring的數據轉換服務實現的功能豐富的對象映射
-
基于注解的元數據映射方式,而且可擴展以支持更多不同的數據格式
-
根據持久層接口自動生成對應實現方法,無需人工編寫基本操作代碼(類似mybatis,根據接口自動得到實現)。當然,也支持人工定制查詢
創建Demo工程
我們使用spring腳手架新建一個demo,學習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實體類及注解
首先我們準備好實體類:
public class Item {Long id;String title; //標題String category;// 分類String brand; // 品牌Double price; // 價格String images; // 圖片地址 }映射
Spring Data通過注解來聲明字段的映射屬性,有下面的三個注解:
-
@Document 作用在類,標記實體類為文檔對象,一般有四個屬性
-
indexName:對應索引庫名稱
-
type:對應在索引庫中的類型
-
shards:分片數量,默認5
-
replicas:副本數量,默認1
-
-
@Id 作用在成員變量,標記一個字段作為id主鍵
-
@Field 作用在成員變量,標記為文檔的字段,并指定字段映射屬性:
-
type:字段類型,取值是枚舉:FieldType
-
index:是否索引,布爾類型,默認是true
-
store:是否存儲,布爾類型,默認是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; //標題@Field(type = FieldType.Keyword)private String category;// 分類@Field(type = FieldType.Keyword)private String brand; // 品牌@Field(type = FieldType.Double)private Double price; // 價格@Field(index = false, type = FieldType.Keyword)private String images; // 圖片地址 }?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的搭建elasticsearch测试工程的全部內容,希望文章能夠幫你解決所遇到的問題。