1 match_all 查询制定索引所有文档
GET post_douyin/_search
{
"query": {
"match_all": {}
}
}
2 match
根据es默认分词器,则为:['小张','是','好','人'],只要匹配任何一个则会进行返回
GET post_douyin/_search
{
"query": {
"match": {
"user.nickname": "小张是好人"
}
}
}
operator可为and、or,默认为or 根据es默认分词器,则为:['小张','是','坏蛋'],and代表要匹配所有关键字
GET post_douyin/_search
{
"query": {
"match": {
"user.nickname" : {
"query": "小张是坏蛋",
"operator": "and"
}
}
}
}
3 match_phrase 类似mysql的 like ‘%<值>%’
GET post_douyin/_search
{
"query": {
"match_phrase": {
"user.nickname": "爱潜水的猫"
}
}
}
slop参数默认为0,slop参数为两组词之间的最大可移动的间隔和顺序,在搜索的时候更加灵活
GET post_douyin/_search
{
"query": {
"match_phrase": {
"user.nickname": {
"query": "勤劳的 小张",
"slop": 0
}
}
}
}
4 match_phrase_prefix 是最左前缀匹配,类似match_phrase ,差异点是根据分词器进行前缀匹配
GET post_douyin/_search
{
"query": {
"match_phrase_prefix": {
"description": "勤劳的小张"
}
}
}
前缀查询对性能影响很大,所以再使用的时候会对结果集进行限制,默认不进行限制
GET post_douyin/_search
{
"query": {
"match_phrase_prefix": {
"description": {
"query": "勤劳的小张",
"max_expansions": 15
}
}
}
}
5 term 相当于mysql中的=
GET post_douyin/_search
{
"query": {
"term": {
"user.nickname": {
"value": "冒泡"
}
}
}
}
6 terms 类似mysql的 user.nicknamein ("小张","小贺")
GET post_douyin/_search
{
"query": {
"terms": {
"user.nickname": [
"小张",
"小贺"
]
}
}
}
7 range
粉丝数大于等于500,小于等于6600
GET post_douyin/_search
{
"query": {
"range": {
"user.follower_num": {
"gte": 500,
"lte": 600
}
}
}
}
时间查询
GET post_douyin/_search
{
"query": {
"range": {
"create_time": {
"gte": "2022-11-1",
"lte": "2022-11-2",
"format": "yyyy-mm-dd"
}
}
}
}
8 exists 过滤空值 为[],null [null] 则都会进行过滤处理
GET post_douyin/_search
{
"query": {
"exists": {
"field": "cha_list"
}
}
}
9 prefix 类似于mysql中的:like "苍茫%"
GET post_douyin/_search
{
"query": {
"prefix": {
"user.nickname": {
"value": "苍茫"
}
}
}
}
10 "?“为1个任意字符,”*"为匹配零个或多个字符
GET post_douyin/_search
{
"query": {
"wildcard": {
"user.nickname": {
"value": "小张*"
}
}
}
}
"name":"王小?", #可以匹配王小小,如果值为 : "王?" 则无法匹配:王小小
#"name":"王*", #可以匹配:王小,也可以匹配:王小小
#"name":"*王*" #可以匹配:洲王小,也可以匹配:洲洲洲王小
11 track_total_hits
GET post_douyin/_search
{
"query": {
"match_all": {}
},
"track_total_hits":true
}
"track_total_hits":true #显示超过1w条数据加上
#"track_total_hits":200 #最大只显示200条数据
#"track_total_hits":false #最大只显示9999条数据
12 bool查询可以将一些简单的查询组合在一起
must: 所有的条件都要匹配文档,类似于mysql的 and 语法,可以参与评分
must_not: 与must相反,must_not下所有的条件匹配到了文档都不会返回,must_not语句不影响评分,她的语句是将不想关的文档进行排除
should: should下的过滤条件可以匹配也可以不匹配文档,相当于mysql语法的 or ,且会参与评分
filter : filter和must实际处理逻辑是一样的,区别是:filter不评分,只是做过滤和排除,与must_not相反
13 sort排序
GET post_douyin/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"comment_count": {
"order": "asc"
}
},
{
"liked_count" : {
"order": "desc"
}
}
]
}
14 分页 from:从那里开始查,size:往后返回第几条数据,类似于mysql中的:LIMIT [offset,] rows
GET post_douyin/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"comment_count": {
"order": "asc"
}
},
{
"liked_count" : {
"order": "desc"
}
}
],
"from": 10,
"size": 20
}
15 _source 指定查询字段
GET post_douyin/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"comment_count": {
"order": "asc"
}
},
{
"liked_count" : {
"order": "desc"
}
}
],
"from": 10,
"size": 20,
"_source": ["comment_count","liked_count"]
}
发表评论 取消回复