国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ElasticSearch簡(jiǎn)介及常見用法

這篇具有很好參考價(jià)值的文章主要介紹了ElasticSearch簡(jiǎn)介及常見用法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

簡(jiǎn)介

Elasticsearch 是 Elastic Stack 核心的分布式搜索和分析引擎。 Logstash 和 Beats 有助于收集、聚合和豐富您的數(shù)據(jù)并將其存儲(chǔ)在 Elasticsearch 中。 Kibana 使您能夠以交互方式探索、可視化和分享對(duì)數(shù)據(jù)的見解,并管理和監(jiān)控堆棧。 Elasticsearch 可以快速索引、搜索和分析海量數(shù)據(jù)。
Elastic 的底層是開源庫 Lucene。但是,你沒法直接用 Lucene,必須自己寫代碼去調(diào)用它的接口。Elastic 是 Lucene 的封裝,提供了 REST API 的操作接口,開箱即用。
官方文檔(推薦):官方文檔鏈接
官方中文:官方中文文檔鏈接
社區(qū)中文:xiaoleilu.com、codingdict.com

一、基本概念

1、Index(索引)

動(dòng)詞:相當(dāng)于 MySQL 中的 insert;
名詞:相當(dāng)于 MySQL 中的 Database。

2、Type(類型)

在 Index(索引)中,可以定義一個(gè)或多個(gè)類型。類似于 MySQL 中的 Table,同種類型的數(shù)據(jù)放在一起。

3、Document(文檔)

保存在某個(gè)索引(Index)下,某種類型(Type)的一個(gè)數(shù)據(jù)(Document),文檔是 JSON 格式的,Document 就像是 MySQL 中的某個(gè) Table 里面的內(nèi)容。

二、Docker 安裝 Es

1、下載鏡像文件

docker pull elasticsearch:8.12 :存儲(chǔ)和檢索數(shù)據(jù)
docker pull kibana:8.12 :可視化檢索數(shù)據(jù)

2、創(chuàng)建實(shí)例

1.ElasticSearch

mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
chmod -R 777 /mydata/elasticsearch/ #保證權(quán)限
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \ #設(shè)置初始內(nèi)存和占用最大內(nèi)存
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:8.12 

2.Kibana

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://xxx:9200 -p 5601:5601 \
-d kibana:8.12
#xxx為自己的虛擬機(jī)地址

三、初步檢索

1、_cat

GET /_cat/nodes:查看所有節(jié)點(diǎn)
GET /_cat/health:查看 es 健康狀況
GET /_cat/master:查看主節(jié)點(diǎn)
GET /_cat/indices:查看所有索引 show databases

2、索引一個(gè)文檔(保存)

在 customer 索引下的 external 類型下保存 1 號(hào)數(shù)據(jù)為:

POST customer/external/1 
{ 
"name": "John Doe"
}
#PUT 和 POST 都可以,
#POST 新增。如果不指定 id,會(huì)自動(dòng)生成 id。指定 id 就會(huì)修改這個(gè)數(shù)據(jù),并新增版本號(hào)
#PUT 可以新增可以修改。PUT 必須指定 id;由于 PUT 需要指定 id,我們一般都用來做修改
#操作,不指定 id 會(huì)報(bào)錯(cuò)。

3、查詢文檔

GET customer/external/1
結(jié)果:

{ 
	"_index": "customer", //在哪個(gè)索引
	"_type": "external", //在哪個(gè)類型
	"_id": "1", //記錄 id
	"_version": 2, //版本號(hào)
	"_seq_no": 1, //并發(fā)控制字段,每次更新就會(huì)+1,用來做樂觀鎖
	"_primary_term": 1, //同上,主分片重新分配,如重啟,就會(huì)變化
	"found": true, "_source": { //真正的內(nèi)容
	"name": "John Doe"
	}
}

4、更新文檔

POST customer/external/1/_update
{ 
	"doc":{ 
		"name": "John Doew"
	}
}
或者
POST customer/external/1
{ 
	"name": "John Doe2"
}
或者
PUT customer/external/1
{ 
	"name": "John Doe"
}

不同:POST 操作會(huì)對(duì)比源文檔數(shù)據(jù),如果相同不會(huì)有什么操作,文檔 version 不增加PUT 操作總會(huì)將數(shù)據(jù)重新保存并增加 version 版本;帶_update 對(duì)比元數(shù)據(jù)如果一樣就不進(jìn)行任何操作。
看場(chǎng)景:
對(duì)于大并發(fā)更新,不帶 _update;
對(duì)于大并發(fā)查詢偶爾更新,帶 _update;對(duì)比更新,重新計(jì)算分配規(guī)則。

5、刪除文檔&索引

DELETE customer/external/1
DELETE customer

6、bulk 批量 API

POST customer/external/_bulk
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }
#語法格式:
{ action: { metadata }}\n
{ request body }\n
{ action: { metadata }}\n
{ request body }\n

四、進(jìn)階索引

1、SearchAPI

ES 支持兩種基本方式檢索 :

  • 一個(gè)是通過使用 REST request URI 發(fā)送搜索參數(shù)(uri+檢索參數(shù))
  • 另一個(gè)是通過使用 REST request body 來發(fā)送它們(uri+請(qǐng)求體)

檢索信息

  • 請(qǐng)求參數(shù)方式檢索
GET bank/_search?q=*&sort=account_number:asc
#響應(yīng)結(jié)果解釋:
took - Elasticsearch 執(zhí)行搜索的時(shí)間(毫秒)
time_out - 告訴我們搜索是否超時(shí)
_shards - 告訴我們多少個(gè)分片被搜索了,以及統(tǒng)計(jì)了成功/失敗的搜索分片
hits - 搜索結(jié)果
hits.total - 搜索結(jié)果
hits.hits - 實(shí)際的搜索結(jié)果數(shù)組(默認(rèn)為前 10 的文檔)
sort - 結(jié)果的排序 key(鍵)(沒有則按 score 排序)
score 和 max_score –相關(guān)性得分和最高得分(全文檢索用)
  • uri+請(qǐng)求體進(jìn)行檢索
GET bank/_search
{ 
	"query": { 
		"match_all": {}
	},
	"sort": [
		{ 
			"account_number": { 
				"order": "desc"
			}
		}
	]
}

2、Query DSL

(1) 基本語法格式
Elasticsearch 提供了一個(gè)可以執(zhí)行查詢的 Json 風(fēng)格的 DSL(domain-specific language 領(lǐng)域特定語言)。這個(gè)被稱為 Query DSL。該查詢語言非常全面,并且剛開始的時(shí)候感覺有點(diǎn)復(fù)雜,真正學(xué)好它的方法是從一些基礎(chǔ)的示例開始的。

  • 一個(gè)查詢語句 的典型結(jié)構(gòu):
{
	QUERY_NAME: {
		ARGUMENT: VALUE, 
		ARGUMENT: VALUE,... 
	}
}
  • 如果是針對(duì)某個(gè)字段,那么它的結(jié)構(gòu)如下:
{
	QUERY_NAME: {
		FIELD_NAME: {
			ARGUMENT: VALUE, 
			ARGUMENT: VALUE,... 
		}
	}
}

比如:

GET bank/_search
{ 
	"query": { 
		"match_all": {}
	},
	"from": 0, 
	"size": 5, 
	"sort": [
		{ 
			"account_number": { 
				"order": "desc"
			}
		}
	]
}

其中:

  • query 定義如何查詢,
  • match_all 查詢類型【代表查詢所有的所有】,es 中可以在 query 中組合非常多的查詢類型完成復(fù)雜查詢
  • 除了 query 參數(shù)之外,我們也可以傳遞其它的參數(shù)以改變查詢結(jié)果。如 sort,size
  • from+size 限定,完成分頁功能
  • sort 排序,多字段排序,會(huì)在前序字段相等時(shí)后續(xù)字段內(nèi)部排序,否則以前序?yàn)闇?zhǔn)

其他常用的語法比如
match【匹配查詢】
match_phrase【短語匹配】
multi_match【多字段匹配】
bool【復(fù)合查詢】
filter【結(jié)果過濾】
term【全文檢索字段用 match,其他非 text 字段匹配用 term?!?br> aggregations【執(zhí)行聚合】(最簡(jiǎn)單的聚合方法大致等于 SQL GROUPBY 和 SQL 聚合函數(shù))
具體使用方法見官網(wǎng):ElasticSearch官方文檔鏈接

3、分詞

一個(gè) tokenizer(分詞器)接收一個(gè)字符流,將之分割為獨(dú)立的 tokens(詞元,通常是獨(dú)立的單詞),然后輸出 tokens 流。例如,whitespace tokenizer 遇到空白字符時(shí)分割文本。它會(huì)將文本 “Quick brown fox!” 分割為 [Quick, brown, fox!]。該tokenizer(分詞器)還負(fù)責(zé)記錄各個(gè) term(詞條)的順序或 position 位置(用于 phrase 短語和 word proximity 詞近鄰查詢),以及 term(詞條)所代表的原始 word(單詞)的 start
(起始)和 end(結(jié)束)的 character offsets(字符偏移量)(用于高亮顯示搜索的內(nèi)容)。Elasticsearch 提供了很多內(nèi)置的分詞器,可以用來構(gòu)建 custom analyzers(自定義分詞器)。
(1)安裝 ik 分詞器
進(jìn)入 es 容器內(nèi)部 plugins 目錄

docker exec -it 容器 id /bin/bash
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-anal
ysis-ik-7.4.2.zip
unzip 下載的文件
rm –rf *.zip
mv elasticsearch/ ik
以確認(rèn)是否安裝好了分詞器
cd ../bin
elasticsearch plugin list:即可列出系統(tǒng)的分詞器

(2)測(cè)試分詞器
使用默認(rèn),請(qǐng)觀察結(jié)果

POST _analyze
{ 
	"text": "我是中國人"
}

使用分詞器,請(qǐng)觀察結(jié)果

POST _analyze
{ 
	"analyzer": "ik_smart", "text": "我是中國人"
}

具體使用技巧參考以下鏈接:ik分詞器github鏈接

五、Elasticsearch-Rest-Client

1)、9300:TCP
spring-data-elasticsearch:transport-api.jar:

  • springboot 版本不同, transport-api.jar 不同,不能適配 es 版本
  • 7.x 已經(jīng)不建議使用,8 以后就要廢棄

2)、9200:HTTP

  • JestClient:非官方,更新慢
  • RestTemplate:模擬發(fā) HTTP 請(qǐng)求,ES 很多操作需要自己封裝,麻煩
  • HttpClient:同上
  • Elasticsearch-Rest-Client:官方 RestClient,封裝了 ES 操作,API 層次分明,上手簡(jiǎn)單

最終選擇 Elasticsearch-Rest-Client(elasticsearch-rest-high-level-client)
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html

1、SpringBoot 整合

<dependency>
	<groupId>org.elasticsearch.client</groupId>
	<artifactId>elasticsearch-rest-high-level-client</artifactId>
	<version>8.12</version>
</dependency>

2、配置

@Bean
RestHighLevelClient client() {
RestClientBuilder builder = RestClient.builder(new HttpHost("自己的虛擬機(jī)地址", 9200, "http"));
	return new RestHighLevelClient(builder);
}

3、使用

參照官方文檔:文章來源地址http://www.zghlxwxcb.cn/news/detail-841695.html

@Test
void test1() throws IOException {
	Product product = new Product();
	product.setSpuName("華為");
	product.setId(10L);
	IndexRequest request = new IndexRequest("product").id("20")
	.source("spuName","華為","id",20L);
	try {
		IndexResponse response = client.index(request, RequestOptions.DEFAULT);
		System.out.println(request.toString());
		IndexResponse response2 = client.index(request, RequestOptions.DEFAULT);
	} catch (ElasticsearchException e) {
		if (e.status() == RestStatus.CONFLICT) {
		}
	}
}

到了這里,關(guān)于ElasticSearch簡(jiǎn)介及常見用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • elasticsearch7基礎(chǔ)用法及java中使用

    elasticsearch7基礎(chǔ)用法及java中使用

    GET、POST、PUT、DELETE、HEAD。 id content 1001 my name is zhang san 1002 i name is li si 1003 my name is wang wu keyword id name 1001,1002,1003 zhang 1001a my 1001,1003 PUT請(qǐng)求:http://127.0.0.1:9200/索引名稱 返回值: 表頭 含義 health 當(dāng)前服務(wù)器健康狀態(tài): green (集群完整) yellow (單點(diǎn)正常、集群不完整) red(單點(diǎn)不正

    2024年02月03日
    瀏覽(55)
  • Elasticsearch 聚合查詢(aggs),java后端面試常見問題

    Elasticsearch 聚合查詢(aggs),java后端面試常見問題

    分組完成以后,我們一般會(huì)對(duì)組中的數(shù)據(jù)進(jìn)行聚合運(yùn)算,例如求平均值、最大、最小、求和等,這些在ES中稱為 度量 比較常用的一些度量聚合方式: Avg Aggregation :求平均值 Max Aggregation :求最大值 Min Aggregation :求最小值 Percentiles Aggregation :求百分比 Stats Aggregation :同時(shí)返

    2024年04月28日
    瀏覽(29)
  • 【Elasticsearch學(xué)習(xí)筆記五】es常用的JAVA API、es整合SpringBoot項(xiàng)目中使用、利用JAVA代碼操作es、RestHighLevelClient客戶端對(duì)象

    目錄 一、Maven項(xiàng)目集成Easticsearch 1)客戶端對(duì)象 2)索引操作 3)文檔操作 4)高級(jí)查詢 二、springboot項(xiàng)目集成Spring Data操作Elasticsearch 1)pom文件 2)yaml 3)數(shù)據(jù)實(shí)體類 4)配置類 5)Dao數(shù)據(jù)訪問對(duì)象 6)索引操作 7)文檔操作 8)文檔搜索 三、springboot項(xiàng)目集成bboss操作elasticsearch

    2023年04月09日
    瀏覽(37)
  • ElasticSearch-學(xué)習(xí)筆記02【ElasticSearch索引庫維護(hù)】

    ElasticSearch-學(xué)習(xí)筆記02【ElasticSearch索引庫維護(hù)】

    Java后端-學(xué)習(xí)路線-筆記匯總表【黑馬程序員】 ElasticSearch-學(xué)習(xí)筆記01【ElasticSearch基本介紹】 【day01】 ElasticSearch-學(xué)習(xí)筆記02【ElasticSearch索引庫維護(hù)】 ElasticSearch-學(xué)習(xí)筆記03【ElasticSearch集群】 ElasticSearch-學(xué)習(xí)筆記04【Java客戶端操作索引庫】 【day02】 ElasticSearch-學(xué)習(xí)筆記05【Spri

    2024年02月04日
    瀏覽(53)
  • ElasticSearch 學(xué)習(xí)、實(shí)踐筆記

    1. 索引(Index) :索引是 Elasticsearch 中最基本的數(shù)據(jù)存儲(chǔ)單位,類似于關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)庫。一個(gè)索引可以包含多個(gè)文檔,每個(gè)文檔都有一個(gè)唯一的 ID,用于標(biāo)識(shí)該文檔。索引可以被分為多個(gè)分片,每個(gè)分片可以存儲(chǔ)一部分文檔數(shù)據(jù)。 ?2. 文檔(Document) :文檔是 Elast

    2024年01月23日
    瀏覽(28)
  • ElasticSearch學(xué)習(xí)筆記(狂神說)

    ElasticSearch學(xué)習(xí)筆記(狂神說)

    視頻地址:https://www.bilibili.com/video/BV17a4y1x7zq 在學(xué)習(xí)ElasticSearch之前,先簡(jiǎn)單了解一下Lucene: Doug Cutting開發(fā) 是apache軟件基金會(huì) jakarta項(xiàng)目組的一個(gè)子項(xiàng)目 是一個(gè)開放源代碼的全文檢索引擎工具包 不是一個(gè)完整的全文檢索引擎,而是一個(gè)全文檢索引擎的架構(gòu),提供了完整的查詢

    2024年02月04日
    瀏覽(52)
  • Elasticsearch基礎(chǔ)學(xué)習(xí)筆記

    Elasticsearch基礎(chǔ)學(xué)習(xí)筆記

    目錄 一、全文搜索 1,數(shù)據(jù)分類 2,搜索分類: 3,什么是全文搜索 全文檢索是指: 倒排索引 二、ElasticSearch簡(jiǎn)介 1,ElasticSearch是什么 2,ElasticSearch特點(diǎn): 3,ElasticSearch版本特性: 4,Elastic生態(tài)圈--Elastic Stack介紹 5,ElasticSearch應(yīng)用場(chǎng)景 6,ElasticSearch單機(jī)版部署安裝 1,環(huán)境

    2024年02月03日
    瀏覽(20)
  • ES(elasticSearch學(xué)習(xí)筆記)

    ES(elasticSearch學(xué)習(xí)筆記)

    es是面向文檔型的數(shù)據(jù)庫,一條數(shù)據(jù)在es數(shù)據(jù)庫就是一個(gè)文檔,和關(guān)系型數(shù)據(jù)庫做一個(gè)類比: 1:es的索引類比關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)庫, 2:es的type類比數(shù)據(jù)表( 7.0版本以上刪除了type這個(gè)概念 ), 3:es的索引下的文檔document類比關(guān)系型數(shù)據(jù)庫的行,新增時(shí)可以指定文檔主鍵id

    2023年04月08日
    瀏覽(20)
  • 【ElasticSearch】學(xué)習(xí)筆記

    【ElasticSearch】學(xué)習(xí)筆記

    感謝狂神老師的奉獻(xiàn) 筆記記錄 B站狂神說Java的ElasticSearch課程: 狂神老師上課視頻 Elaticsearch,簡(jiǎn)稱為es,es是一個(gè)開源的高擴(kuò)展的分布式全文檢索引擎,它可以近乎實(shí)時(shí)的存儲(chǔ)、檢索數(shù)據(jù);本身擴(kuò)展性很好,可以擴(kuò)展到上百臺(tái)服務(wù)器,處理PB級(jí)別(大數(shù)據(jù)時(shí)代)的數(shù)據(jù)。es也使用

    2023年04月08日
    瀏覽(15)
  • Elasticsearch學(xué)習(xí)筆記(1)

    Elasticsearch學(xué)習(xí)筆記(1)

    Elasticsearch是一個(gè)開源的搜索引擎,主要應(yīng)用于文章解鎖中,如在購物網(wǎng)站搜索物品時(shí)快速查找到目標(biāo),Elasticsearch的建立是基于一個(gè)一個(gè)的索引庫,與mysql的數(shù)據(jù)庫有些許類似的地方 –name設(shè)置容器名稱 -e設(shè)置環(huán)境變量,這里設(shè)置的內(nèi)存大小和是否為集群模式 -v設(shè)置數(shù)據(jù)卷掛載

    2024年04月11日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包