日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Elasticsearch 不同的搜索类型之间的区别

發(fā)布時間:2025/3/20 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elasticsearch 不同的搜索类型之间的区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、match? ?輕量級搜索

?

1 GET /wymlib/_search 2 3 { 4 "query": { 5 "match": { 6 ?"title": "王陽明" 7 } 8 } 9 }

上面的查詢匹配就會進行分詞,比如"王陽明"會被ik分詞器分為"王陽明" ,"陽明", "王","陽","明" 那么所有包含這些詞中的一個或多個的文檔就會被搜索出來。并且根據(jù)lucene的評分機制(TF/IDF)來進行評分。

?

2、match_phrase? ?短語搜索

?

1 GET /wymlib/_search 2 3 { 4 "query": { 5 "match_phrase": { 6 "title": "王陽明" 7 } 8 } 9 }

match_phrase要求只匹配上"王陽明"這個短語,完全匹配可能比較嚴,我們會希望有個可調(diào)節(jié)因子,少匹配一個也滿足,那就需要使用到slop

1 { 2 "query": { 3 "match_phrase": { 4 "title" : { 5 "query" : "王陽明", 6 "slop" : 1 7 } 8 } 9 } 10 }

?

3、multi_match? ?多字段匹配

?

如果我們希望兩個或兩個以上的字段進行匹配,其中一個字段能匹配上就滿足的話,使用multi_match

1 { 2 "query": { 3 "multi_match": { 4 "query": "王陽明第三卷", 5 "fields": [ 6 "title", 7 "keywords", 8 "author" 9 ] 10 } 11 } 12 }

multi_match中有三種類型即: best_fields 、 most_fields 和 cross_fields (最佳字段、多數(shù)字段、跨字段)

1) 我們希望完全匹配的文檔占的評分比較高,則需要使用best_fields,multi_match默認是best_fields

1 { 2 "query": { 3 "multi_match": { 4 "query": "王陽明", 5 "fields": [ 6 "title", 7 "yearAlias" 8 ], 9 "minimum_should_match": "70%" 10 } 11 } 12 }

2)?我們希望越多字段匹配的文檔評分越高,就要使用most_fields

{"query": {"multi_match": {"query": "王陽明","type": "most_fields","fields": ["title","keywords"]}} }

3)?我們會希望這個詞條的分詞詞匯是分配到不同字段中的,那么就使用cross_fields

1 { 2 "query": { 3 "multi_match": { 4 "query": "王陽明", 5 "fields": [ 6 "title", 7 "keywords" 8 ], 9 "type": "cross_fields" 10 } 11 }, 12 "highlight": { 13 "fields": { 14 "title": { 15 "pre_tags": ["<a>" ], 16 "post_tags": [ "</a>"] 17 }, 18 "keywords": { 19 "pre_tags": ["<b>" ], 20 "post_tags": ["</b>" ] 21 } 22 } 23 } 24 }

上面查詢語句中,包含了高亮顯示結(jié)果屬性:highligt

?

4、term?精確值查找

1 { 2 "query": { 3 "term": { 4 "title": "王陽明" 5 } 6 } 7 }

與match查詢類似,但term是精確查找,代表完全匹配,即不進行分詞器分析,文檔中必須包含整個搜索的詞匯,但是 term 和 terms 是 必須包含(must contain) 操作,而不是必須精確相等(must equal exactly),當查詢 jack 時,[jack] 和[jack,jone]兩條數(shù)據(jù)都會被找到

轉(zhuǎn)載于:https://www.cnblogs.com/hoojjack/p/8600230.html

總結(jié)

以上是生活随笔為你收集整理的Elasticsearch 不同的搜索类型之间的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。