elasticsearch的简单查询

基本查询:
	使用elasticsearch内置查询条件进行查询。

#text与keyword的区别
keyword类型的数据,只有打出完整的名称才能搜索到

#添加映射
PUT test4
{"mappings" :{
"job":{
"properties":{
"title":{
"store":true,  #mapping的属性,默认值是false,不存储.
"type":"text",
"analyzer":"ik_max_word"   #设置索引和搜索时的解析器,这里使用的是ik_max_word插件
},
"company_name":{
"store":true,
"type":"text"
},
"comments":{
"type":"integer"
},
"add_time":{
"type":"date",
"format":"yyyy-MM-dd"
}
}
}
}

#match查询
进行分词解析
GET test4/_search
{
"query":{	
"match":{
"title":"python"       #输入大小写均可搜索到
}
}
}

#term查询 
term是代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇
GET test4/_search
{
"query":{
"term":{
"company_name":"alibaba"     #如果原输入数据为大写,则无论输入大小写都搜索不到,当然这个也可以通过分词设置来解决
}
}
}

#terms查询
只要有一个匹配都会返回回来
GET test4/_search
{
"query":{
"terms":{
"title":["aaa","bbbb","cccc"]
}
}
}

#控制查询的返回数量
可以用来做分页
GET test4/_search
{
"query":{
"match":{
"title":"python"
}
},
"form":0,   #返回的是从第几个开始,0为第一个
"size":2    #返回总数
}

#match_all查询
返回所有
GET test4/_search
{
"query":{
"match_all":{}
}
}

#match_phrase查询
#短语查询
GET /test4/_search
{
"query":{
"match_phrase":{
"title":{
"query":"python系统",   #整个短语为一个分词查询
"slop":6   
 #使短语之间的分词之间间隔小于等于6的可被搜索到,比如“pythonxxx系统”
}
}
}
}


#multi_match查询
#比如可以指定多个字段
#比如查询title和desc这两个字段里面包含python的关键词文档
GET test4/_search
{
"query":{
"multi_match":{
"query":"python",
"fields":["title^3","desc"]    
 #在title和desc任意一个字段满足上述条件都可被搜索到
 #title^3,给字段title设置3倍权重

}
}
}


#指定返回字段
GET test4/_search
{
"stored_fields":["title","company_name"],   
 #指定的返回字段,其他字段不返回;
 #并且返回store=ture的字段(默认为false),因为指定的stored_fields
"query":{
"match":{
"title":"python"      #搜索条件,满足后返回上述条件要求的字段
}
}
}

#通过sort把结果排序
GET test4/_search
{
"query":{
"match_all":{}
},
"sort":[{     
 #这里是一个数组,数组里是一个字典,字典的key(comments)就是我们要sort的字段
"comments":{
"order":"desc"   #排序方法
 #desc降序排列;
#asc升序排列.
}
}
]
}

#范围查询
#range查询
GET test4/_search
{
"query":{
"range":{
"comments":{
"gte":10,  #gte大于等于; gt大于
"lte":20,  #lte小于等于; lt小于
"boost":2.0  #boost权重,可以在搜索的时候指明某一字段的权重
}
}
}
}

#range时间范围查询
GET test4/_search
{
"query":{
"range"{
"add_time":{
"gte":"2017-04-01",   #大于等于2017年4月1日
"lte":"now"    #小于等于当前时间
}
}
}
}


#wildcard模糊查询
GET test4/_search
{
"query":{
"wildcard":{"title":{"value":"pyth*n","boost":2.0}}   # *号处出现任何值都可以匹配到
}
}

猜你喜欢

转载自blog.csdn.net/weixin_43933037/article/details/86227211
今日推荐