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"]

}

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部