做網(wǎng)站開發(fā)需要學(xué)那些東西安裝百度到手機(jī)桌面
💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。
- 推薦:kwan 的首頁,持續(xù)學(xué)習(xí),不斷總結(jié),共同進(jìn)步,活到老學(xué)到老
- 導(dǎo)航
- 檀越劍指大廠系列:全面總結(jié) java 核心技術(shù),jvm,并發(fā)編程 redis,kafka,Spring,微服務(wù)等
- 常用開發(fā)工具系列:常用的開發(fā)工具,IDEA,Mac,Alfred,Git,typora 等
- 數(shù)據(jù)庫系列:詳細(xì)總結(jié)了常用數(shù)據(jù)庫 mysql 技術(shù)點,以及工作中遇到的 mysql 問題等
- 新空間代碼工作室:提供各種軟件服務(wù),承接各種畢業(yè)設(shè)計,畢業(yè)論文等
- 懶人運(yùn)維系列:總結(jié)好用的命令,解放雙手不香嗎?能用一個命令完成絕不用兩個操作
- 數(shù)據(jù)結(jié)構(gòu)與算法系列:總結(jié)數(shù)據(jù)結(jié)構(gòu)和算法,不同類型針對性訓(xùn)練,提升編程思維,劍指大廠
非常期待和您一起在這個小小的網(wǎng)絡(luò)世界里共同探索、學(xué)習(xí)和成長。💝💝💝 ?? 歡迎訂閱本專欄 ??
博客目錄
- 1.max_shards_per_node
- 2.python api
- 3.fuzziness
- 4.\_score
- 5.minimum_should_match
- 6.embedding_dim
1.max_shards_per_node
在 Elasticsearch 中,max_shards_per_node
是一個集群級別的設(shè)置,用于限制每個節(jié)點上可以打開的最大分片數(shù)。這個設(shè)置有助于防止單個節(jié)點上分片數(shù)量過多,從而可能導(dǎo)致性能問題或資源耗盡。默認(rèn)情況下,Elasticsearch 集群的每個節(jié)點可以有 1000 個分片,但這個數(shù)字可以根據(jù)需要進(jìn)行調(diào)整。
臨時設(shè)置:
PUT /_cluster/settings
{"transient": {"cluster": {"max_shards_per_node": 10000}}
}
永久設(shè)置:
PUT /_cluster/settings
{"persistent": {"cluster": {"max_shards_per_node": 10000}}
}
2.python api
# 指定參數(shù)分頁查詢
from elasticsearch import Elasticsearch
es = Elasticsearch()
query = {"query": {"match_all": {}}
}
response = es.search(index="db01_v1_20240903", body=query, from_=0, size=10)
3.fuzziness
在 Elasticsearch 中,fuzziness
是一個用于模糊查詢的參數(shù),它允許在搜索時指定一個編輯距離,即允許用戶輸入與索引中的單詞有一定差異的查詢詞,依然能夠匹配到相應(yīng)的文檔。這個參數(shù)主要用于處理用戶輸入錯誤或拼寫變體的情況。
fuzziness
可以設(shè)置為以下值:
- 數(shù)值:如
0
、1
、2
,表示允許的最大編輯操作次數(shù)。數(shù)值越大,匹配的結(jié)果可能會越多,但同時查詢性能可能會下降。 - AUTO:這是一個特殊的設(shè)置,它會根據(jù)查詢詞的長度自動調(diào)整編輯距離。通常,對于長度小于等于 2 的詞,編輯距離設(shè)置為 0;長度在 3 到 5 之間的詞,編輯距離設(shè)置為 1;長度大于 5 的詞,編輯距離設(shè)置為 2。這個設(shè)置可以通過
AUTO:[low],[high]
的格式進(jìn)行自定義,其中low
和high
分別表示詞長范圍的下限和上限。
例如,如果你想要在搜索時允許一個編輯錯誤,可以這樣設(shè)置:
{"query": {"match": {"field": {"query": "search_term","fuzziness": 1}}}
}
或者使用 AUTO
:
{"query": {"match": {"field": {"query": "search_term","fuzziness": "AUTO"}}}
}
需要注意的是,模糊查詢雖然可以提高用戶體驗,但可能會對性能產(chǎn)生影響,因為它需要額外的處理來生成和匹配可能的變體詞。因此,在性能敏感的應(yīng)用中應(yīng)謹(jǐn)慎使用。
4._score
{"took": 1,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 2,"relation": "eq"},"max_score": 2.137549,"hits": [{"_index": "book","_type": "_doc","_id": "3","_score": 2.137549,"_source": {"name": "spring開發(fā)基礎(chǔ)","description": "spring 在java領(lǐng)域非常流行,java程序員都在用。","studymodel": "201001","price": 88.6,"timestamp": "2019-08-24 19:11:35","pic": "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg","tags": ["spring", "java"]}},{"_index": "book","_type": "_doc","_id": "2","_score": 0.57961315,"_source": {"name": "java編程思想","description": "java語言是世界第一編程語言,在軟件開發(fā)領(lǐng)域使用人數(shù)最多。","studymodel": "201001","price": 68.6,"timestamp": "2019-08-25 19:11:35","pic": "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg","tags": ["java", "dev"]}}]}
}
結(jié)果分析:
-
建立索引時, description 字段 term 倒排索引
-
java 2,3
-
程序員 3
-
-
搜索時,直接找 description 中含有 java 的文檔 2,3,并且 3 號文檔含有兩個 java 字段,一個程序員,所以得分高,排在前面。2 號文檔含有一個 java,排在后面。
5.minimum_should_match
minimum_should_match
是 Elasticsearch 中布爾查詢(Boolean Query)的一個重要參數(shù),它用來指定在執(zhí)行查詢時,should 子句至少應(yīng)該匹配的子句數(shù)量或百分比。這個參數(shù)可以是具體的數(shù)字,也可以是百分比,或者它們的組合。
-
具體數(shù)字:如果
minimum_should_match
設(shè)置為一個整數(shù),它表示至少需要匹配的 should 子句的數(shù)量。例如,如果有 4 個 should 子句,設(shè)置為 2 意味著文檔必須至少滿足其中的 2 個子句。 -
百分比:如果設(shè)置為百分比,它表示至少需要匹配的 should 子句的百分比。例如,如果有 6 個 should 子句,設(shè)置為 “50%” 意味著至少需要匹配 3 個子句(6 的 50%向下取整)。
-
組合使用:可以使用百分比和固定值的組合,如 “3<90%”,表示至少需要匹配 3 個子句或總數(shù)的 90%(以較大者為準(zhǔn))。
-
默認(rèn)值:如果 bool 查詢包含至少一個 should 子句,而沒有 must 或 filter 子句,則
minimum_should_match
的默認(rèn)值為 1。這意味著至少有一個 should 子句需要匹配。如果 bool 查詢中包含 must 或 filter 子句,則minimum_should_match
的默認(rèn)值為 0,意味著 should 子句可以不滿足任何條件。 -
特殊語法:可以使用特殊的語法來更精確地控制匹配條件,例如 “2<-25% 9<-3”,這表示如果有 1 或 2 個子句,則都需要匹配;如果有 3-9 個子句,則需要匹配除了 25%之外的所有子句;如果有 9 個以上的子句,則需要匹配除了三個之外的所有子句。
這個參數(shù)的使用可以根據(jù)查詢的具體需求來調(diào)整,以達(dá)到最佳的查詢結(jié)果和性能平衡。正確使用 minimum_should_match
可以提高查詢的準(zhǔn)確性和召回率,使得搜索結(jié)果更加符合用戶的預(yù)期。
6.embedding_dim
在 Elasticsearch 中,embedding_dim
是一個與向量搜索相關(guān)的參數(shù),它指定了存儲在dense_vector
字段中的向量的維度。這個參數(shù)在創(chuàng)建索引時定義,并用于指定向量字段的維度大小。當(dāng)索引設(shè)置為 true 時,embedding_dim
的值不能超過 1024,當(dāng)索引設(shè)置為 false 時,可以不超過 2048。這個值必須與后續(xù)寫入的向量維度一致。
embedding_dim
參數(shù)直接影響搜索結(jié)果,因為它決定了文檔向量在向量空間中的表示。在進(jìn)行向量搜索時,Elasticsearch 會使用這個參數(shù)來計算查詢向量與文檔向量之間的相似度。例如,使用余弦相似度或歐幾里得距離等度量標(biāo)準(zhǔn)來找到與查詢向量最相似的文檔向量。如果embedding_dim
設(shè)置不正確,可能會導(dǎo)致搜索結(jié)果的相關(guān)性降低,因為向量之間的比較可能不準(zhǔn)確。
在實際應(yīng)用中,embedding_dim
的選擇取決于所使用的機(jī)器學(xué)習(xí)模型生成的向量維度。例如,如果使用 BERT 模型生成的向量是 768 維的,那么在 Elasticsearch 中創(chuàng)建索引時,embedding_dim
應(yīng)該設(shè)置為 768,以確保文檔向量可以正確存儲和檢索。
例如,如果你使用 BERT 模型、GloVe、Word2vec 或者 ChatGPT Embedding API 等將文本轉(zhuǎn)換為向量,你需要在創(chuàng)建索引時指定dims
參數(shù),其值應(yīng)與生成的向量維度相匹配。這樣,Elasticsearch 就可以正確地存儲和索引這些向量,以便進(jìn)行高效的相似度搜索。
在實際應(yīng)用中,embedding_dim
參數(shù)的使用可以幫助實現(xiàn)語義搜索,通過比較查詢向量和文檔向量的相似度來檢索文檔,從而提供更加相關(guān)和準(zhǔn)確的搜索結(jié)果。這種基于向量的搜索方法可以用于各種應(yīng)用場景,如圖像搜索、音樂推薦、文本分類等。
覺得有用的話點個贊
👍🏻
唄。
??????本人水平有限,如有紕漏,歡迎各位大佬評論批評指正!😄😄😄💘💘💘如果覺得這篇文對你有幫助的話,也請給個點贊、收藏下吧,非常感謝!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且長,行則將至,讓我們一起加油吧!🌙🌙🌙