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

 

posted @ 2020-03-09 14:20  fat_girl_spring  阅读(243)  评论(0编辑  收藏  举报