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

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

這篇具有很好參考價值的文章主要介紹了551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、Elasticsearch創(chuàng)建/查看/刪除索引、創(chuàng)建/查看/修改/刪除文檔、映射關系

1.1 Elasticsearch中的數(shù)據(jù)格式

Elasticsearch 是面向文檔型數(shù)據(jù)庫,一條數(shù)據(jù)在這里就是一個文檔。為了方便大家理解,我們將 Elasticsearch
里存儲文檔數(shù)據(jù)和關系型數(shù)據(jù)庫 MySQL 存儲數(shù)據(jù)的概念進行一個類比。

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

ES 里的 Index 可以看做一個庫,而 Types 相當于表,Documents 則相當于表的行。這里 Types
的概念已經(jīng)被逐漸弱化,Elasticsearch 6.X 中,一個 index 下已經(jīng)只能包含一個 type,Elasticsearch 7.X 中, Type 的概念已經(jīng)被刪除了。

1.2 索引操作

1.2.1 創(chuàng)建索引

在ES中創(chuàng)建一個索引,就相當于在mysql中創(chuàng)建了一個數(shù)據(jù)庫,而mysql中的數(shù)據(jù)庫肯定是不能重復的,也即ES中的索引也不能重復,所以這是一個冪等性操作,需要發(fā)送PUT請求(如果重復發(fā)送PUT請求、重復添加索引,會返回錯誤信息),這里不能發(fā)送POST請求。

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.2.2 查看指定索引

在postman中,向ES服務器發(fā)送GET請求。這里的路徑和上邊的創(chuàng)建索引是一樣的,只是請求方式不一樣

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.2.3 查看全部索引

在 Postman 中,向 ES 服務器發(fā) GET 請求。
health 當前服務器健康狀態(tài):green(集群完整) yellow(單點正常、集群不完整) red(單點不正常)
status索引打開、關閉狀態(tài)
index 索引名
uuid 索引統(tǒng)一編號
pri 主分片數(shù)量
rep 副本數(shù)量
docs.count 可用文檔數(shù)量
docs.deleted 文檔刪除狀態(tài)(邏輯刪除)
store.size 主分片和副分片整體占空間大小
pri.store.size 主分片占空間大小

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.2.4 刪除索引

在 Postman 中,向 ES 服務器發(fā) DELETE 請求。

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.3 文檔操作

1.3.1 創(chuàng)建文檔

索引已經(jīng)創(chuàng)建好了,接下來我們來創(chuàng)建文檔,并添加數(shù)據(jù)。這里的文檔可以類比為關系型數(shù)據(jù)庫中的表數(shù)據(jù),添加的數(shù)據(jù)格式為 JSON 格式

在 Postman 中,向 ES 服務器發(fā) POST 請求。

{
	"title":"小米手機",
	"category":"小米",
	"image":"http://www.szh.com/szh.jpg",
	"price":3999.00
}

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

上面的數(shù)據(jù)創(chuàng)建后,由于沒有指定數(shù)據(jù)唯一性標識(ID),默認情況下,ES 服務器會隨機生成一個。

如果想要自定義唯一性標識,需要在創(chuàng)建時指定。推薦使用下面這種方式創(chuàng)建文檔。

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.3.2 查看單個文檔:主鍵查詢

查看文檔時,需要指明文檔的唯一性標識,類似于 MySQL 中數(shù)據(jù)的主鍵查詢。在 Postman 中,向 ES 服務器發(fā) GET 請求。

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.3.3 查看所有文檔:全查詢

“query”:這里的query代表一個查詢對象,里面可以有不同的查詢屬性

“match_all”:查詢類型,例如:match_all(代表查詢所有),match,term,range等等

{查詢條件}:查詢條件會根據(jù)類型的不同,寫法也有差異

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.3.4 修改文檔中的全部字段

修改數(shù)據(jù)時,也可以只修改某一給條數(shù)據(jù)的局部信息,也可以修改所有字段信息。

修完完之后,再次發(fā)送GET請求,查看修改后的文檔內容。

{
   "title":"OPPO手機",
   "category":"OPPO",
   "images":"http://www.szh.com/szh.jpg",
   "price":2400.00
}

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04
551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.3.5 修改文檔中的某個字段
{
   "doc" : {
       "title":"VIVO手機",
       "category":"VIVO"
   }
}

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.3.6 刪除文檔

刪除一個文檔不會立即從磁盤上移除,它只是被標記成已刪除(邏輯刪除)。在 Postman 中,向 ES 服務器發(fā) DELETE 請求。

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.3.7 條件查詢文檔內容

match 匹配類型查詢,會把查詢條件進行分詞,然后進行查詢,多個詞條之間是 or 的關系。

在 Postman 中,向 ES 服務器發(fā) GET 請求。

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

上面這種查詢方式的請求參數(shù)是直接跟在請求路徑之后的,這種方式不太好,因為可能會造成亂碼問題。

所以一般采用下面這種方式,將請求參數(shù)存放在請求體中。

{
   "query" : {
       "match" : {
           "category" : "華為"
       }
   }
}

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.3.8 分頁查詢+排序文檔內容

默認情況下,Elasticsearch 在搜索的結果中,會把文檔中保存在_source
的所有字段都返回。如果我們只想獲取其中的部分字段,我們可以添加_source 的過濾

sort 可以讓我們按照不同的字段進行排序,并且通過 order 指定排序的方式。desc 降序,asc 升序。

from:當前頁的起始索引,默認從 0 開始。 from = (pageNum - 1) * size。

size:每頁顯示多少條。

{
   "query" : {
       "match_all" : {

       }
   },
   "from" : 0, // (頁碼-1)*每頁條數(shù), 第一頁:(1-1)*2=0, 第二頁:(2-1)*2=2
   "size" : 2,
   "_source" : ["title","price"],
   "sort" : {
       "price" : {
           "order" : "desc"
       }
   }
}

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04
551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04
551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.3.9 多條件查詢:and

bool把各種其它查詢通過must(必須 and )、must_not(必須不)、should(應該 or)的方式進行組合 。

{
	"query" : {
		"bool" : {
			"must" : [
				{
					"match" : {
						"category" : "小米"
					}
				},
				{
					"match" : {
						"price" : 3999.00
					}
				}
			]
		}
	}
}

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.3.10 多條件查詢:or

bool把各種其它查詢通過must(必須 and )、must_not(必須不)、should(應該 or)的方式進行組合 。

{
	"query" : {
		"bool" : {
			"should" : [
				{
					"match" : {
						"category" : "VIVO"
					}
				},
				{
					"match" : {
						"price" : 5999.00
					}
				}
			]
		}
	}
}

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.3.11 多條件查詢:大于、小于

range 查詢找出那些落在指定區(qū)間內的數(shù)字或者時間。range 查詢允許以下字符: gt 大于> gte 大于等于>= lt 小于<
lte 小于等于<=

{
	"query" : {
		"bool" : {
			"must" : [
				{
					"match" : {
						"category" : "小米"
					}
				}
			],
			"filter" : {
				"range" : {
					"price" : {
						"gt" : 3000.00,
                       "lt" : 4000.00
					}
				}
			}
		}
	}
}

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.3.12 全文查詢+高亮顯示

在進行關鍵字搜索時,搜索出的內容中的關鍵字會顯示不同的顏色,稱之為高亮。

在使用 match 查詢的同時,加上一個 highlight 屬性:

pre_tags:前置標簽 post_tags:后置標簽 fields:需要高亮的字段 title:這里聲明 title
字段需要高亮,后面可以為這個字段設置特有配置,也可以空

{
   "query" : {
       "match_phrase" : {
           "category" : "小"
       }
   },
   "highlight" : {
       "fields" : {
           "category" : {}
       }
   }
}

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

當我們將查詢條件中的 match_phrase 改為 match 之后,再次查詢,結果仍然是有的。這就很奇怪了,我文檔中分類信息只有 小米 、沒有 小 啊,為什么還能查詢到結果呢? 這是因為ES在保存文檔數(shù)據(jù)時,會將數(shù)據(jù)進行分詞、拆解操作,并將拆解后的數(shù)據(jù)保存到倒排索引中,這樣即使使用文字的一部分(小米可以查詢到、小也可以查詢到)也能查詢到數(shù)據(jù),這種方式就稱為 全文檢索。 也就是說文檔中的category是小米,

通過 小、米、小米 均可以查詢到。

如果我們寫的是 小華,則ES會幫我們查詢出:%小%、%華% 相關的所有數(shù)據(jù),這里就是進行了數(shù)據(jù)分詞、拆解,進而采用倒排索引的方式查詢。

假如說,我不想采用采用這種全文檢索的匹配模式,需要將 match 改為 match_phrase。

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.3.13 聚合查詢:根據(jù)價格分組、對價格求平均值

聚合允許使用者對 es 文檔進行統(tǒng)計分析,類似與關系型數(shù)據(jù)庫中的 group by,當然還有很多其他的聚合,例如取最大值、平均值等等。

對某個字段取最大值 max
對某個字段取最小值 min
對某個字段求和 sum
對某個字段取平均值 avg
對某個字段的值進行去重之后再取總數(shù) distinct

{
   "aggs" : { //聚合操作
       "price_group" : { //名稱,自定義
           "terms" : { //分組
               "field" : "price" //分組字段
           }
       }
   },
   "size" : 0
}

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

{
   "aggs" : { //聚合操作
       "price_avg" : { //名稱,自定義
           "avg" : { //分組
               "field" : "price" //分組字段
           }
       }
   },
   "size" : 0
}

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

1.4 映射操作

有了索引庫,等于有了數(shù)據(jù)庫中的 database。

接下來就需要建索引庫(index)中的映射了,類似于數(shù)據(jù)庫(database)中的表結構(table)。創(chuàng)建數(shù)據(jù)庫表需要設置字段名稱,類型,長度,約束等;索引庫也一樣,需要知道這個類型下有哪些字段,每個字段有哪些約束信息,這就叫做映射(mapping)。

  • 字段名:任意填寫,下面指定許多屬性,例如:title、subtitle、images、price

  • type:類型,Elasticsearch 中支持的數(shù)據(jù)類型非常豐富,說幾個關鍵的: ? String 類型,又分兩種: ?

  • text:可分詞

  • keyword:不可分詞,數(shù)據(jù)會作為完整字段進行匹配 ? Numerical:數(shù)值類型,分兩類 ?

基本數(shù)據(jù)類型:long、integer、short、byte、double、float、half_float ?
浮點數(shù)的高精度類型:scaled_float ? Date:日期類型 ? Array:數(shù)組類型 ? Object:對象

  • index:是否索引,默認為 true,也就是說你不進行任何配置,所有字段都會被索引。 ? true:字段會被索引,則可以用來進行搜索 ?
    false:字段不會被索引,不能用來搜索

  • store:是否將數(shù)據(jù)進行獨立存儲,默認為 false ? 原始的文本會存儲在_source
    里面,默認情況下其他提取出來的字段都不是獨立存儲的,是從_source
    里面提取出來的。當然你也可以獨立的存儲某個字段,只要設置"store": true 即可,獲取獨立存儲的字段要比從_source
    中解析快得多,但是也會占用更多的空間,所以要根據(jù)實際業(yè)務需求來設置

  • analyzer:分詞器,這里的 ik_max_word 即使用 ik 分詞器

首先是 http://127.0.0.1:9200/user ,發(fā)送PUT請求,創(chuàng)建一個user索引,然后在這個索引下創(chuàng)建一個映射。

就類似于在mysql中創(chuàng)建一個名為 user 的數(shù)據(jù)庫,在這個數(shù)據(jù)庫中定義一張表的結構如下:??????

text 類型為true表示 name 字段可以支持 分詞、拆解 操作的查詢;而 keyword 類型為true表示 sex
字段僅支持完全匹配的模式;最后 keyword 類型為false表示 tel 字段不支持查詢。

{
	"properties" : {
		"name" : {
			"type" : "text",
			"index" : true
		},
		"sex" : {
			"type" : "keyword",
			"index" : true
		},
		"tel" : {
			"type" : "keyword",
			"index" : false
		}
	}
}

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

索引有了,映射也有了(數(shù)據(jù)庫有了,表結構有了,就差向表中添加數(shù)據(jù)了),也就是需要添加文檔內容。

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

因為name字段是支持text模式查詢,即支持分詞、拆解操作,做倒排索引,所以雖然文檔中的name字段為張起靈,但是經(jīng)過分詞拆解,name為徐、鳳、年、鳳年這幾種都可以查詢出數(shù)據(jù)。

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

由于 sex 字段不支持text分詞拆解,僅支持keyword完全匹配的模式,所以源文檔數(shù)據(jù)中 sex 為 man,這里只寫個 m
是查詢不到的。

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

最后的tel字段是最苛刻的,壓根不支持text、keyword兩種查詢,所以這里就算是寫成和文檔中的 tel 一樣,也查詢不到,因為 tel 字段不支持查詢。

551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

二、參考鏈接

分布式全文搜索引擎 Elasticsearch文章來源地址http://www.zghlxwxcb.cn/news/detail-410722.html

到了這里,關于551、Elasticsearch詳細入門教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包