1、query string search
GET /user_index/user_type/_search
took:耗费了几毫秒
timed_out:是否超时,这里是没有
_shards:数据拆成了几个分片,所以对于搜索请求,会打到所有的primary shard(或者是它的某个replica shard也可以)
hits.total:查询结果的数量,3个document
hits.max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高
hits.hits:包含了匹配搜索的document的详细数据
GET /user_index/user_type/_search?q=name:baba&sort=age:desc
2、query DSL查询
DSL:Domain Specified Language,特定领域的语言
http request body:请求体,可以用json的格式来构建查询语法,比较方便,可以构建各种复杂的语法,比query string search强大方便。
GET /user_index/user_type/_search
{
"query": { "match_all": {} }
}
1)查询名称包含baba的信息,同时按照价格降序排序
GET /user_index/user_type/_search
{"query": { "match": { "name":"baba"}},"sort":[{"age":"desc"}]}
2)分页查询信息,每页显示2条,查询第二页,并按年龄倒叙排序。
form:分页起始位置,从0开始,
size:页面大小。
GET /user_index/user_type/_search
{
"query": { "match": {
"name":"baba"
}
}, "from": 0,
"size": 2,
"sort":[{
"age":"desc"
}]
}
3)只要查询出来用户的名称和年龄
_source:["filed1","filed2"]:[]是要查的参数。
GET /ear_index/ear_type/_search
{
"query": {
"match": {
"name":"baba"
}},
"_source": ["name","age"],
"from": 0,
"size": 2,
"sort":[{
"age":"desc"
}]
}
3、query filter 过滤查询
4)根据名称查询年龄大于10小于20的用户信息
GET /user_index/user_type/_search
{
"query":{
"bool": {
"must":{
"match":{
"name":"baba"
}
},"filter": {
"range": {
"age": {
"gte": 10,
"lte": 20
}
}
}
}
}
}
4、full-text search(全文检索)会分解成一个个单字或单词,然后通过倒排索引,一个个匹配你要搜索的信息。
GET /user_index/user_type/_search
{
"query":{
"match": {
"desc": "12323"
}
}
}
5、phrase search(短语搜索)
跟全文检索相对应,相反,全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回
phrase search,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配,才能作为结果返回
GET /user_index/user_type/_search
{
"query":{
"match_phrase": {
"desc": "12323"
}
}
}
6、highlight search(高亮搜索结果)highlight :高亮显示字段
GET /user_index/user_type/_search
{"query":{"match": {"desc": "12323"}},
"highlight": {"fields" : {"desc" :{} }}}