最近稍微研究了一下ElasticSearch(下文簡稱ES),所謂可擴展的開源彈性搜索解決方案,跟同事笑稱,若是它做爲SQL SERVER的話,個人瞭解還在基本的select語句上,固然學習它也是一個積累知識的過程,閒言少敘,書歸正傳,今天簡單將裏面中的基礎的兩個查詢總結一下,有不對的地方歡迎各位指出。學習
剛剛接觸ES的時候,發現他的搜索確實很快,不像SQL Server 的like查詢,他還能經過解析用戶搜索的詞彙,經過相關係數(score)都給你查出來,固然SQLServer 也有全文搜索,這個暫且不提。先舉個例子:我想搜索 包含「美國哈佛大學」的title。match語句以下:blog
1 { 2 "fields": [ 3 "title" 4 ], 5 "query": { 6 "match": { 7 "title": "美國哈佛大學" 8 } 9 }, 10 "size": 100 11 }
返回結果:it
很明顯,「美國哈佛大學」六個字,它作了分詞:["美國","哈佛","大學"](固然可能更詳細),而後獲得的結果是2964條,也就是說,包含這幾個關鍵字的有這麼多,那麼我在換上 match_phrase搜索,語句以下:ast
1 { 2 "fields": [ 3 "title" 4 ], 5 "query": { 6 "match_phrase": { 7 "title": { 8 "query": "美國哈佛大學", 9 "slop": 0 10 } 11 } 12 }, 13 "size": 100 14 }
結果:基礎
看就兩條數據。因此,想用什麼搜索方式仍是看需求吧。擴展