ES---查询

ES—查询

【前言】
由于ES是将词条存储在倒排索引中,所以能够很快实现查询,为什么不用正排索引,请看之前的文章 点这里

一、URI Search

简易方式,可临时使用,不适合构建复杂查询
在这里插入图片描述

二、Query DSL (Domain Specific Language)

  • 叶查询语句
    • match查询
    • term查询
    • range查询
  • 复合查询子句
    • 可以包含叶子查询或者其他复杂查询语句
    • bool查询

1.match_all:返回所有文档

GET stu/_search
{
    "query": {
        "match_all": {}
    }
}

2.match:bool类型查询
【分词结果为john和kerry两个单词,只要name字段值中包含有其中任意一个,那么返回该文档】

GET stu/_search
{
    "query": {
        "match": {
          "name":"John Kerry"
        }
    }
}

3.match_phrase:短语匹配查询
【分词结果为john和kerry两个单词,如果name字段值中依次包含所有分词,那么返回该文档】

GET stu/_search
{
    "query": {
        "match_phrase": {
          "name":"John Kerry"
        }
    }
}

4.match_phrase_prefix:前缀匹配查询
【查询是否前缀是XX的文档】

GET stu/_search
{
    "query": {
        "match_phrase_prefix": {
          "name":"John Ke"
        }
    }
}

5.multi_match:多字段匹配查询
【查询满足多个字段】

GET stu/_search
{
    "query": {
        "multi_match": {
          "query": "John like cooking",
          "fields": ["name","interest"]
        }
    }
}

6.term:词条查询
【根据相应的词条查询】

GET stu/_search
{
    "query": {
        "term":{
          "name":"john"
        }
    }
}

7.terms:多词条查询
【根据多个词条查询,注意和term区别】

GET stu/_search
{
    "query": {
        "terms":{
          "name":["john","da"]
        }
    }
}

8.range:范围查询
【类似于between…and…,但是它的效率很高,由于是B+树作为存储,所有会减少大量无用查询】

GET stu/_search
{
    "query": {
        "range" : {
            "yearOfBorn" : {
                "gte" : 1995,
                "lte" : 2000
            }
        }
    }
}

9.bool:布尔查询
【查询喜欢cooking,但是不在1995和2000之间出生的文档】

GET stu/_search
{
    "query": {
      "bool": {
        "must": {
            "match": { "interest": "cooking"} },
        "must_not": {
            "range": { "yearOfBorn": { "gte": 1995, "lte": 2000 }}}
      }
    }
}

【注意:must 和 must not】

三、分页
1.from+size:浅分页
【取出前 5页】

GET stu/_search
{
  "query": {
    "match_all": {}
  },
  "size": 5,
  "from": 0
}

2.scroll:深分页
【返回scroll_id与第一页内容,scroll_id 5分钟有效】

GET stu/_search?scroll=5m
{
  "from": 0,
  "size": 5,
  "query": {"match_all": {}}
}

猜你喜欢

转载自blog.csdn.net/qq_43288259/article/details/114944105