Elasticsearch之Search
Search API有两种查询方法:
1、URL Search
在URL中使用查询参数
使用"q",指定查询字符串
curl -XGET "http://192.168.1.234:9200/blogs/_search?q=mike"
curl -XGET "http://192.168.1.234:9200/blogs/_search" -H 'Content-Type:application/json' -d'
{
"query":{
"match_all":{}
}
}
2、Request Body Search
使用Elasticsearch提供的,基于JSON
指定字段 vs 范查询
q=title:2012/q=2012
指定字段查询
GET /blogs/_search?q=zhouqiang&df=title
GET /blogs/_search?q=user:zhouqiang”
范查询
GET /blogs/_search?q=zhouqiang
Term vs Phrase
Beautiful Mind等效于Beautiful OR mind
“Beautiful Mind”等效于Beautiful AND mind Phrase查询
mike为范查询
GET /blogs/_search?q=user:zhouqiang mike
{
"profile": "true"
}
Phrase查询
GET /blogs/_search?q=user:"zhouqiang mike"
{
"profile": "true"
}
Bool查询
GET /blogs/_search?q=user:(zhouqiang AND mike)
{
"profile": "true"
}
布尔操作
AND/OR/NOT或者&&/||/!
必须大写
title:(matrix NOT reloaded)
分组查询
+表示must
-表示must_not
title:(+maxtri -reloaded)
范围查询
区间表示:[]闭区间, {}开区间
year:{2019 TO 2020]
year:[* TO 2018]
算数符号
year:>2010
year:(>2010 && <=2018)
year:(>2010 +<=2018)
通配符查询(通配符查询效率低,占用内存大,不建议使用)
?代表1个字符,*代表0或者多个字符
title:mi?d
title:be*
正则表达式
title:[bt]oy
模糊匹配与近似查询
title:befutifl~1
title:"lord rings"~2