0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Elasticsearch保姆級入門

jf_ro2CN3Fa ? 來源:勇哥java實戰(zhàn)分享 ? 2023-09-01 15:24 ? 次閱讀

Elasticsearch 是一個分布式的、面向生產(chǎn)規(guī)模工作負載優(yōu)化的搜索引擎。

Kibana 可以將 Elasticsearch 中的數(shù)據(jù)轉(zhuǎn)化為直觀的圖表、圖形和儀表盤。

這篇文章,您將學習本地安裝 Elasticsearch 和 Kibana,以及使用開發(fā)工具/ Java SDK 創(chuàng)建索引和搜索數(shù)據(jù)。

1 本地安裝

1.1 創(chuàng)建網(wǎng)絡

我們需要創(chuàng)建一個供 Elasticsearch 和 Kibana 使用的 network。這個 network 將被用于 Elasticsearch 和 Kibana 之間的通信。

dockernetworkcreateelastic

1.2 安裝 ES

拉取 Elasticsearch 鏡像

dockerpulldocker.elastic.co/elasticsearch/elasticsearch:{version}

這里的版本 version ,我們選?。?code style="font-size:14px;padding:2px 4px;margin-right:2px;margin-left:2px;color:rgb(30,107,184);background-color:rgba(27,31,35,.05);font-family:'Operator Mono', Consolas, Monaco, Menlo, monospace;">8.9.0 。

dockerpulldocker.elastic.co/elasticsearch/elasticsearch:8.9.0

啟動 docker elasticsearch 鏡像

dockerrun--nameelasticsearch--netelastic-p9200:9200-p9300:9300-e"discovery.type=single-node"-tdocker.elastic.co/elasticsearch/elasticsearch:8.9.0

進入ES容器,修改 elasticsearch 用戶密碼

bin/elasticsearch-reset-password--usernameelastic-i

1.3 安裝 Kibana

拉取 Kibana 鏡像

dockerpulldocker.elastic.co/kibana/kibana:8.9.0

啟動 Kibana 鏡像

dockerrun--namekibana--netelastic-p5601:5601docker.elastic.co/kibana/kibana:8.9.0

因為啟動安裝 Kibana ,需要 token , 所以進入 elasticsearch 容器 ,執(zhí)行:

bin/elasticsearch-create-enrollment-token-skibana
372f5f18-47c2-11ee-97a6-92fbcf53809c.png

輸入 token 之后,刷新頁面,進入登錄頁面:

37432e62-47c2-11ee-97a6-92fbcf53809c.png

基于 Spring Boot + MyBatis Plus + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

2 接口測試

我們可以使用 Kibana Dev tools 來進行接口測試。

2.1 添加

向索引添加單個文檔,提交一個 HTTP POST 請求,目標是該索引。

POST/customer/_doc/1
{
"firstname":"Jennifer",
"lastname":"Walters"
}
37547c4e-47c2-11ee-97a6-92fbcf53809c.png

該請求會自動創(chuàng)建名為customer的索引(如果不存在),然后添加一個 ID 為 1的新文檔,同時存儲并建立firstnamelastname字段的索引。

新文檔可以立即從集群中的任何節(jié)點獲取。您可以使用 GET 請求來檢索它,請求中需指定其文檔 ID :

GET/customer/_doc/1
3766fc0c-47c2-11ee-97a6-92fbcf53809c.png

要一次性添加多個文檔,請使用 _bulk API。批量數(shù)據(jù)必須是以換行分隔的 JSON(NDJSON)格式。每一行必須以換行字符( )結(jié)尾,包括最后一行。

PUTcustomer/_bulk
{"create":{}}
{"firstname":"Monica","lastname":"Rambeau"}
{"create":{}}
{"firstname":"Carol","lastname":"Danvers"}
{"create":{}}
{"firstname":"Wanda","lastname":"Maximoff"}
{"create":{}}
{"firstname":"Jennifer","lastname":"Takeda"}
37820f92-47c2-11ee-97a6-92fbcf53809c.png

2.2 搜索

已索引的文檔可以在準實時的情況下進行搜索。下面的搜索將在customer索引中匹配所有名為 Jennifer 的顧客。

GETcustomer/_search
{
"query":{
"match":{"firstname":"Jennifer"}
}
}
37ba8aac-47c2-11ee-97a6-92fbcf53809c.png

2.3 視圖

進入 Kibana Data Views :

37d9741c-47c2-11ee-97a6-92fbcf53809c.png

然后創(chuàng)建數(shù)據(jù)視圖 :

37e989a6-47c2-11ee-97a6-92fbcf53809c.png

創(chuàng)建數(shù)據(jù)視圖之后,可以在 Analytics > Discover 查看索引數(shù)據(jù)。

37fc857e-47c2-11ee-97a6-92fbcf53809c.png

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

3 Java SDK 實戰(zhàn)

3.1 依賴

<dependency>
<groupId>co.elastic.clientsgroupId>
<artifactId>elasticsearch-javaartifactId>
<version>8.9.0version>
dependency>

<dependency>
<groupId>io.github.hakky54groupId>
<artifactId>sslcontext-kickstartartifactId>
<version>7.1.0version>
dependency>

<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-databindartifactId>
<version>2.12.3version>
dependency>

<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-coreartifactId>
<version>2.12.3version>
dependency>

<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-annotationsartifactId>
<version>2.12.3version>
dependency>

<dependency>
<groupId>jakarta.jsongroupId>
<artifactId>jakarta.json-apiartifactId>
<version>2.0.1version>
dependency>


<dependency>
<groupId>org.elasticsearch.clientgroupId>
<artifactId>elasticsearch-rest-clientartifactId>
<version>8.9.0version>
dependency>

3.2 創(chuàng)建客戶端

1、通過用戶名和密碼創(chuàng)建客戶端

RestClientBuilderbuilder=RestClient.builder(newHttpHost("localhost",9200,"https"));

finalCredentialsProvidercredentialsProvider=newBasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,newUsernamePasswordCredentials("elastic","ilxw@19841201"));

// Elasticsearch 提供了 Https 服務,創(chuàng)建 client 建立 SSL 鏈接時沒有做證書驗證;
SSLFactorysslFactory=SSLFactory.builder().withUnsafeTrustMaterial().withUnsafeHostnameVerifier().build();
builder=builder.setHttpClientConfigCallback(
httpClientBuilder->httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)
setSSLContext(sslFactory.getSslContext())
.setSSLHostnameVerifier(sslFactory.getHostnameVerifier())
);

RestClientrestClient=builder.build();

//CreatethetransportwithaJacksonmapper
ElasticsearchTransporttransport=newRestClientTransport(restClient,newJacksonJsonpMapper());

//AndcreatetheAPIclient
ElasticsearchClientesClient=newElasticsearchClient(transport);

2、通過 apikey 創(chuàng)建客戶端

我們在安全目錄的管理頁面,創(chuàng)建 API key ,如下圖:

381cbc36-47c2-11ee-97a6-92fbcf53809c.png

示例代碼如下:

//自己創(chuàng)建的apikey
StringapiKey="cnRVUy1Ja0JZYUtuSTRuMG1oRkk6RVFSdTk2T2NRb1cyYVdLRTB4TjktQQ==";

RestClientBuilderbuilder=RestClient.builder(newHttpHost("localhost",9200,"https"));

SSLFactorysslFactory=SSLFactory.builder().withUnsafeTrustMaterial().withUnsafeHostnameVerifier().build();

RestClientrestClient=builder.setDefaultHeaders(newHeader[]{newBasicHeader("Authorization","ApiKey"+apiKey)}).setHttpClientConfigCallback(httpClientBuilder->httpClientBuilder.setSSLContext(sslFactory.getSslContext()).setSSLHostnameVerifier(sslFactory.getHostnameVerifier())).build();

//CreatethetransportwithaJacksonmapper
ElasticsearchTransporttransport=newRestClientTransport(restClient,newJacksonJsonpMapper());

//AndcreatetheAPIclient
ElasticsearchClientesClient=newElasticsearchClient(transport);

3.3 創(chuàng)建文檔

創(chuàng)建索引名為 products ,新建一個文檔 id 為 1 。

ProductPoproduct=newProductPo(1,"Bag",42);

IndexRequestindexRequest=newIndexRequest.Builder<>().index("products").id(String.valueOf(product.getId())).document(product).build();

IndexResponseresponse=esClient.index(indexRequest);

System.out.println("Indexedwithversion"+response.version());

			38378fe8-47c2-11ee-97a6-92fbcf53809c.png

3.4 查詢文檔

GetResponseresponse=esClient.get(g->g
.index("products")
.id(String.valueOf(1)),
ProductPo.class
);

if(response.found()){
ProductPoproduct=response.source();
System.out.println("Productname"+product.getName());
}else{
System.out.println("Productnotfound");
}

3.5 修改文檔

Mapdoc=newHashMap();
//文檔產(chǎn)品名稱調(diào)整為mybike
doc.put("name","mybike");
doc.put("price",100);

BulkOperationop=newBulkOperation.Builder().update(
i->i.action(newUpdateAction.Builder<>().doc(doc).docAsUpsert(true).build()).id("1"))
.build();

Listlist=Collections.singletonList(op);
BulkResponseresponse=esClient.bulk(bulkBuilder->bulkBuilder.index("products").operations(list));

3.6 刪除文檔

esClient.delete(d->d.index("products").id("1"));

參考文檔:

1、Elasticsearch 官方文檔:

https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/getting-started-java.html

2、Github文檔

https://github.com/elastic/elasticsearch


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2943

    瀏覽量

    104096
  • 鏡像
    +關(guān)注

    關(guān)注

    0

    文章

    158

    瀏覽量

    10651
  • Elasticsearch
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    2813

原文標題:肝了兩小時的 Elasticsearch 保姆級入門

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Windows安裝ElasticSearch

    Windows安裝ElasticSearch
    的頭像 發(fā)表于 02-15 17:09 ?882次閱讀
    Windows安裝<b class='flag-5'>ElasticSearch</b>

    基于EPM240T100C5的CPLD開發(fā)保姆環(huán)境搭建教程

    基于EPM240T100C5的CPLD開發(fā)保姆環(huán)境搭建教程
    的頭像 發(fā)表于 06-09 19:35 ?5164次閱讀
    基于EPM240T100C5的CPLD開發(fā)<b class='flag-5'>保姆</b><b class='flag-5'>級</b>環(huán)境搭建教程

    linux安裝配置ElasticSearch之源碼安裝

    ElasticSearch是基于Lucene這個非常成熟的索引方案,另加上一些分布式的實現(xiàn):集群,sharding,replication等。以下是對其采用源碼安裝的方法1.下載
    發(fā)表于 01-11 17:27

    ElasticSearch的詞條查詢

    ElasticSearch查詢 第三篇:詞條查詢
    發(fā)表于 04-30 17:03

    docker安裝Elasticsearch操作指南

    docker安裝Elasticsearch以及分詞器
    發(fā)表于 09-16 16:53

    ElasticSearch的初步環(huán)境

    ElasticSearch最實用入門指南——初步環(huán)境
    發(fā)表于 03-31 11:32

    STM32HAL庫硬件I2C如何驅(qū)動INA226保姆?

    STM32HAL庫硬件I2C如何驅(qū)動INA226保姆
    發(fā)表于 02-07 06:35

    elasticsearch介紹PPT

    elasticsearch介紹PPT
    發(fā)表于 12-13 21:05 ?20次下載

    Spring-Elasticsearch插件說明

    Spring-Elasticsearch插件說明
    發(fā)表于 12-13 21:05 ?0次下載

    ElasticSearch的必備知識:從入門、索引管理到映射詳解

    本文介紹了ElasticSearch的必備知識:從入門、索引管理到映射詳解。 一、快速入門 1.查看集群的健康狀況 http://localhost:9200/_cat http
    的頭像 發(fā)表于 09-25 10:44 ?2224次閱讀
    <b class='flag-5'>ElasticSearch</b>的必備知識:從<b class='flag-5'>入門</b>、索引管理到映射詳解

    Elasticsearch6.1教程

    Elasticsearch6.1教程
    發(fā)表于 07-04 14:40 ?0次下載

    ElasticSearch是什么?應用場景是什么?

    ElasticSearch是什么 ElasticSearch的功能 ElasticSearch的應用場景 ElasticSearch的特點
    的頭像 發(fā)表于 10-09 18:38 ?2315次閱讀

    Elasticsearch入門簡介

    Elasticsearch(后續(xù)簡稱ES) 是一個實時的分布式存儲、搜索、分析的引擎。
    的頭像 發(fā)表于 02-24 09:44 ?570次閱讀

    保姆的OpenHarmony創(chuàng)新賽賦能直播課程來了!

    操演練 幫助開發(fā)者在比賽中提升競爭力 為闖關(guān)加碼 本期為萌新入門的班級課程 與你分享RK3568編譯和語言的魅力 周四19:00 直播間不見不散! 原文標題:保姆的OpenHarmony創(chuàng)新賽賦能
    的頭像 發(fā)表于 07-11 21:05 ?347次閱讀
    <b class='flag-5'>保姆</b><b class='flag-5'>級</b>的OpenHarmony創(chuàng)新賽賦能直播課程來了!

    SpringBoot 連接ElasticSearch的使用方式

    在上篇 ElasticSearch 文章中,我們詳細的介紹了 ElasticSearch 的各種 api 使用。 實際的項目開發(fā)過程中,我們通?;谀承┲髁骺蚣芷脚_進行技術(shù)開發(fā),比如
    的頭像 發(fā)表于 10-09 10:35 ?634次閱讀