平時(shí)我們存儲數(shù)據(jù)用的最多的就是mysql,在前面的文章里我也分享過很多關(guān)于mysql的知識,今天我們來集成另外一種數(shù)據(jù)存儲系統(tǒng)ES,它是一款NoSql型數(shù)據(jù)庫,主要使用場景有商品搜索,文章搜索等,關(guān)鍵詞就是搜索。 我們先簡單介紹下ES。 ?
Elasticsearch是一個基于Lucene的搜索服務(wù)器。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java語言開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是一種流行的企業(yè)級搜索引擎。Elasticsearch用于云計(jì)算中,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定,可靠,快速,安裝使用方便 ?
(資料圖片)
這是來自于百度百科的解釋,其實(shí)我們就直接把它理解成搜索引擎就行了,接下來,我們就開始快速集成,然后上手使用吧! ?
本篇介紹的是如何通過docker安裝es,提前你得有docker環(huán)境 ?
docker pull elasticsearch:7.6.2復(fù)制代碼
mkdir -p /Users/lezai/docker/volumes/data/elasticsearch/config/mkdir -p /Users/lezai/docker/volumes/data/elasticsearch/datamkdir -p /Users/lezai/docker/volumes/data/elasticsearch/plugins復(fù)制代碼
vim /Users/lezai/docker/volumes/data/elasticsearch/config/elasticsearch.yml復(fù)制代碼
elasticsearch.yml
http.host: 0.0.0.0復(fù)制代碼
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ -v /Users/lezai/docker/volumes/data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /Users/lezai/docker/volumes/data/elasticsearch/data:/usr/share/elasticsearch/data \ -v /Users/lezai/docker/volumes/data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -d elasticsearch:7.6.2復(fù)制代碼
在瀏覽器輸入 http://localhost:9200,如果出現(xiàn)以下內(nèi)容,則代表安裝成功
{ "name" : "43e2638f84ac", "cluster_name" : "elasticsearch", "cluster_uuid" : "hZKT7NQNRl-Dg2Xrb3isGg", "version" : { "number" : "7.6.2", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search"}復(fù)制代碼
org.springframework.boot spring-boot-starter-data-elasticsearch org.springframework.boot spring-boot-starter-test test org.projectlombok lombok 1.18.18 復(fù)制代碼
其實(shí)這里的實(shí)體對應(yīng)的就是ES索引 @Document(indexName = "sys_user") 代表映射的是sys_user 索引 @Field(type = FieldType.Keyword) 代表字段應(yīng)設(shè)在es中是keyword類型 ?
這里就不介紹過多的ES用法 ?
package com.aims.springbootes.entity;import lombok.Builder;import lombok.Data;import org.springframework.data.annotation.Id;import org.springframework.data.elasticsearch.annotations.Document;import org.springframework.data.elasticsearch.annotations.Field;import org.springframework.data.elasticsearch.annotations.FieldType;import java.io.Serializable;import java.util.List;@Document(indexName = "sys_user") //文檔@Data@Builderpublic class SysUser implements Serializable { @Id //主鍵 private String id; //ES中id不能定義為Long private String username; private String password; private int level; @Field(type = FieldType.Keyword) private List roles;}復(fù)制代碼
ElasticsearchRepository 遵循Spring-data的規(guī)范,所以操作es,就相當(dāng)于我們使用jpa去操作數(shù)據(jù)庫一樣
package com.aims.springbootes.dao;import com.aims.springbootes.entity.SysUser;import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;import org.springframework.stereotype.Repository;import java.util.List;/** * 第一種方式,類似于JPA,編寫一個ElasticsearchRepository * 第一個泛型為Bean的類型 * 第二個泛型為Bean的主鍵類型 */@Repositorypublic interface SysUserDao extends ElasticsearchRepository {}復(fù)制代碼
spring: elasticsearch: rest: uris: http://localhost:9200復(fù)制代碼
這里通過往ES中塞入1000條數(shù)據(jù),我們運(yùn)行下,但是我們現(xiàn)在不知道有沒有插入進(jìn)去。
@Test public void testInsert() { List list = new ArrayList<>(); list.add("teacher"); list.add("student"); list.add("admin"); list.add("leader"); for (int i = 0; i < 1000; i++) { int toIndex = new Random(1).nextInt(4); SysUser build = SysUser.builder() .password("123456") .username("AI碼師") .level(i) .roles(list.subList(0, toIndex)) .build(); sysUserDao.save(build); } System.out.printf("結(jié)束"); }復(fù)制代碼
在編寫一個查詢的,來驗(yàn)證是否插入成功
@Test public void testFindAll(){ Iterable all = sysUserDao.findAll(); all.forEach((sysUser)->{ System.out.printf(sysUser.getId()); }); }復(fù)制代碼
到這已經(jīng)集成了ES,更多Spring-Data語法可以參考JPA的寫法,在IDEA中會有很多智能提示,幫助你寫的。 ?
使用spring-data-es 提供的ElasticsearchRepository 只能進(jìn)行簡單的增刪改查操作,如果碰到一些稍微復(fù)雜的聚合操作,他就很難應(yīng)付了,所以這里有幾個建議: ?
如果只需要做簡單增刪改查操作,直接繼承ElasticsearchRepository即可如果項(xiàng)目中有非常復(fù)雜的查詢或聚合操縱,可以使用結(jié)合ElasticsearchRestTemplate做一些復(fù)雜的操作,這個包不需要再引用其他依賴,已經(jīng)集成在spring-data-es里面了。?如何利用客戶端快速編寫ES 語句
這里我要介紹一款軟件 kibana,它和es是老組合了,通過它能夠直接連接es,直接在頁面編寫ES語句,值得一提的是它的語法智能提示簡直不要太棒了
這個一定要和es的版本保持一致,防止api不兼容
docker pull kibana:7.6.2復(fù)制代碼
mkdir -p /Users/lezai/docker/volumes/data/kibana/config/復(fù)制代碼
`vim /Users/lezai/docker/volumes/data/kibana/config/kibana.yml
## ** THIS IS AN AUTO-GENERATED FILE **## Default Kibana configuration for docker targetserver.name: kibanaserver.host: "0"elasticsearch.hosts: [ "http://elasticsearch:9200" ]xpack.monitoring.ui.container.elasticsearch.enabled: true
標(biāo)簽:
平時(shí)我們存儲數(shù)據(jù)用的最多的就是mysql,在前面的文章里我也分享過很...
過去三天,蘇寧全國40多個城市的門店每天給入店顧客貼膜超過50萬張...
1、首先,我們在榮耀v20手機(jī)桌面找到并點(diǎn)擊【設(shè)置】。2、進(jìn)入設(shè)置頁...
3·15晚會丨評書機(jī)里有玄機(jī)騙騙騙
3月15日儲能板塊較上一交易日上漲0 27%,上海電氣領(lǐng)漲。當(dāng)日上證指...
今天康樂衛(wèi)士和明陽科技攜手上市,北交所上市公司家數(shù)增至181家。其...
作者:陳凱華中國科學(xué)院大學(xué)特聘教授;郭銳中國科學(xué)院大學(xué)特別研究...
過去一周,全國多地4S門店幾乎被踏破門檻,其中以湖北省殺價(jià)最瘋。...
1、一、顯存頻率解析顯存頻率是指默認(rèn)情況下,該顯存在顯卡上工作時(shí)...
近日,6G概念板塊異動拉升,引起市場關(guān)注。據(jù)悉,中國衛(wèi)通(601698...
無規(guī)矩不成方圓,但是規(guī)矩太多了,則感覺到束縛。我們一個人工作的...
1、“因石立意”,即在只有一塊或幾塊石頭的情況下,根據(jù)已有的石頭...
1、HopoHoppe都是好博不是一家首先,德國進(jìn)口HOPPE好博五金件和國產(chǎn)...
1、我總是將喝過的瓶子或用過的袋子加以利用。2、例如將喝過的易拉...
阿根廷國家隊(duì)關(guān)于中國行聲明一些二手交易平臺和社交網(wǎng)絡(luò),已有人在...
2023瀏陽周末焰火秀放票時(shí)間答:每周視實(shí)際情況開放門票數(shù)量,將于...
開源證券發(fā)布研究報(bào)告稱,2022年重卡領(lǐng)域新能源滲透率為3 77%,處...
1、安徽省水利水電勘測設(shè)計(jì)研究總院有限公司勘測分院于2012年08月03...
1、48v電動車可以行駛30公里左右,60v電動車可以行駛50公里左右,72...
2023年3月13日,安徽黃山休寧縣,茶農(nóng)在有機(jī)茶園采摘春茶。春回大地...
每經(jīng)AI快訊,3月13日,北上資金凈買入的個股共有985只,北上資金加...
1、面板奶量。2、就是純看站街智力。3、前10的分別是大幽魂上衣、逆...
1、干股:干股是指未出資而獲得的股份,但其實(shí)干股并不是指真正的股...
石家莊2023年消費(fèi)促進(jìn)月暨國韻文化藝術(shù)節(jié)—花朝節(jié)系列活動,本周末繼續(xù)。
1、腎上腺素是神經(jīng)和激素的遞質(zhì),是搶救和心肺復(fù)蘇時(shí)用于刺激心臟的...
交易商品牌 產(chǎn)地交貨地最新報(bào)價(jià)甲基丙烯酸叔丁酯 含量:99 8%,...
1、你好,我是中國民航大學(xué)的學(xué)生。2、雖然不是航空工程專業(yè)的,但...
編者按:在直播帶貨的概念融入基金產(chǎn)品銷售后,基金電商部門強(qiáng)勢崛...
1、《春蝶》是由白狼作詞,白狼作曲,葉蝶(五歲時(shí))演唱的歌曲。2...
報(bào)道稱,在經(jīng)歷了2022年3%的增長之后,政府工作報(bào)告中預(yù)測的反彈,...
廣告
X 關(guān)閉
廣告
X 關(guān)閉