elasticsearch基本查询三(英文分词)match查询
生活随笔
收集整理的這篇文章主要介紹了
elasticsearch基本查询三(英文分词)match查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#match查詢
#match query知道分詞器的存在,會對filed進行分詞操作, 然后再查詢
GET /ib3/user/_search
{ "query":{ "match":{ "name": "zhaoliu" }}
}
GET /lib3/user/_search
{ "query":{ "match":{ "age": 20}}
}
#match_all:查詢所有文檔
GET /ib3/user/_search
{ "query":{"match_all":{}}
}
#multi_match:可以指定多個字段
GET /ib3/user/_search
{ "query":{ "multi_match": { "query": "Ilyou", "fields": ["interests" ,"name"]}}
}
#match_ phrase:短語匹配查詢
#ElasticSearch引擎首先分析(analyze) 查詢字符串,
#從分析后的文本中構建短語查詢,
#這意味著必須匹配短語中的所有分詞,
#并且保證各個分詞的相對位置不變:
GET lib3/user/_search
{ "query":{"match_phrase":{"interests": "duanlian, shuoxiangsheng" }}
}
term查詢試試,沒有找到,因為term是不知道分詞的,會對? ? "name": "zhaoliu zhaoming"? 當成一個關鍵字,索引這個關鍵字在倒排索引是沒有的,所以沒有找到
?
?terms查詢同樣不知道分詞(在倒排索引中? ?"name": "zhaoliu zhaoming"? ?會被看成一個關鍵字,在倒排索引是不存在這個索引的)而且terms是數組查詢,不支持單個字符串查詢的
#match query知道分詞器的存在,會對filed進行分詞操作, 然后再查詢? ? #match指定單個字段條件查詢
GET /lib3/user/_search {"query":{"match":{"name": "zhaoliu zhaoming"}} } {"took" : 38,"timed_out" : false,"_shards" : {"total" : 5,"successful" : 5,"skipped" : 0,"failed" : 0},"hits" : {"total" : 2,"max_score" : 0.6931472,"hits" : [{"_index" : "lib3","_type" : "user","_id" : "2","_score" : 0.6931472,"_source" : {"name" : "zhaoming","address" : "bei jing hai dian qu qing he zhen","age" : 20,"birthday" : "1998-10-12","interests" : "xi huan hejiu, duanlian, changge"}},{"_index" : "lib3","_type" : "user","_id" : "1","_score" : 0.2876821,"_source" : {"name" : "zhaoliu","address" : "hei long jiang sheng tie ling shi","age" : 50,"birthday" : "1970-12-12","interests" : "xi buan hejiu, duanlian, lvyou"}}]} }我們在看下匹配度的問題
GET /lib3/user/_search {"query":{"match":{"interests": "duanlian changge"}} } {"took" : 8,"timed_out" : false,"_shards" : {"total" : 5,"successful" : 5,"skipped" : 0,"failed" : 0},"hits" : {"total" : 4,"max_score" : 1.3862944,"hits" : [{"_index" : "lib3","_type" : "user","_id" : "2","_score" : 1.3862944,"_source" : {"name" : "zhaoming","address" : "bei jing hai dian qu qing he zhen","age" : 20,"birthday" : "1998-10-12","interests" : "xi huan hejiu, duanlian, changge"}},{"_index" : "lib3","_type" : "user","_id" : "3","_score" : 0.5753642,"_source" : {"name" : "lisi","address" : "bei jing hai dian qu qing he zhen","age" : 23,"birthday" : "1998-10-12","interests" : "xi huan hejiu,duanlian, changge"}},{"_index" : "lib3","_type" : "user","_id" : "5","_score" : 0.2876821,"_source" : {"name" : "zhangsan","address" : "bei jing chao yang qu","age" : 29,"birthday" : "1988-10-12","interests" : "xi huan tingyinyue , changge , tiaowu"}},{"_index" : "lib3","_type" : "user","_id" : "1","_score" : 0.2876821,"_source" : {"name" : "zhaoliu","address" : "hei long jiang sheng tie ling shi","age" : 50,"birthday" : "1970-12-12","interests" : "xi buan hejiu, duanlian, lvyou"}}]} } #查詢user索引下年齡20的文檔 GET /lib3/user/_search {"query":{"match":{"age": 20}} } #查詢索引user下的所有文檔 GET /lib3/user/_search {"query":{"match_all":{}} }#multi_match:可以指定多個字段條件查詢
#multi_match指定多個字段條件查詢 #只要指定字段條件中含有changge的這個關鍵字都會被查詢出來 #那么含有changge也會被檢索到 GET /lib3/user/_search {"query" :{"multi_match": {"query": "changge","fields": ["interests" , "name"]}} }#短語匹配? match_phrase
#短語匹配,在interests這個字段中含有完全一樣的短語就會被查詢出來 GET lib3/user/_search {"query":{"match_phrase":{"interests": "duanlian, changge"}} }?
?
總結
以上是生活随笔為你收集整理的elasticsearch基本查询三(英文分词)match查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java的主要就业方向
- 下一篇: php yii 表单title,Yii2