基本查询:
使用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}} # *号处出现任何值都可以匹配到
}
}