目录
一、查询某个索引下的全部文档
二、根据查询条件查询文档
三、分页查询
四、查询指定返回的字段
五、排序
六、多条件查询
七、范围查询
八、全文检索与完全匹
一、查询某个索引下的全部文档
语法:
GET /索引名称/_search
{
  "query": {
    "match_all": {}
  }
}例子:
GET /es_db1/_search
{
  "query": {
    "match_all": {}
  }
}结果:

二、根据查询条件查询文档
语法如下,使用query,match查询条件。
GET /索引名称/_search
{
  "query": {
    "match": {
      "属性名":"属性值"
    }
  }
}例子:
GET /es_db1/_search
{
  "query": {
    "match": {
      "name":"关羽"
    }
  }
}结果:

三、分页查询
语法:from和size, from表示从第几个开始,size表示查询多少条。from:(页码数-1) * size大小。
例子:以下例子就是从第3页开始,查询2条。
GET /es_db1/_search
{
  "query": {
    "match": {
      "name":"关羽"
    }
  },
  "from":4,
  "size": 2
}结果:

四、查询指定返回的字段
语法:
GET /es_db1/_search
{
  "query": {
    "match": {
      "name":"查询条件字段值"
    }
  },
  "_source":"返回的字段",
  "from":4,
  "size": 2
}例子:
GET /es_db1/_search
{
  "query": {
    "match": {
      "name":"关羽"
    }
  },
  
  "_source":"address",
  "from":4,
  "size": 2
}
结果:

五、排序
语法:这里的age,直接修改age字段即可表示排序字段, sort是固定写法, order是固定写法表示排序的意思,desc表示降序意思。
GET /es_db1/_search
{
  "query": {
    "match": {
      "name":"查询条件字段值"
    }
  },
 
  "from":4,
  "size": 2,
  "sort": {
      "age": {
        "order": "desc"
      }
  }
  
}例子:
GET /es_db1/_search
{
  "query": {
    "match": {
      "name":"关羽"
    }
  },
 
  "from":4,
  "size": 2,
  "sort": {
      "age": {
        "order": "desc"
      }
  }
  
}结果:

六、多条件查询
bool表示查询结果是否满足,固定写法。 must表示must数据里面的查询条件同时成立相当于and查询。如果是must改为should,则表示任意条件满足,相当于or
# 多条件查询同时成立
GET /es_db1/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name":"关羽"
          }
        },
         {
          "match": {
            "address":"蜀国荆州2"
          }
        }
      ]
    }
  }
}例子:
# 多条件查询同时成立
GET /es_db1/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name":"关羽"
          }
        },
         {
          "match": {
            "address":"蜀国荆州2"
          }
        }
      ]
    }
  }
}结果:

例子:
# 多条件查询任一满足
GET /es_db1/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name":"关羽"
          }
        },
         {
          "match": {
            "name":"刘备"
          }
        }
      ]
    }
  }
}结果:

七、范围查询
语法:
GET /es_db1/_search
{
  "query": {
    "bool": {
      "must": [
         {
          "match": {
            "查询字段":"字段值"
          }
        }
      ],
      "filter": [
        {
          "range": {
            "查询字段": {
              "gte": 最小值,
              "lte": 最大值
            }
          }
        }
      ]
    }
  }
}例子:
# 范围查询
GET /es_db1/_search
{
  "query": {
    "bool": {
      "must": [
         {
          "match": {
            "name":"刘备"
          }
        }
      ],
      "filter": [
        {
          "range": {
            "age": {
              "gte": 10,
              "lte": 50
            }
          }
        }
      ]
    }
  }
}结果:

八、全文检索与完全匹
在上面的例子都是用match,是全文检索,比如说match“中华人民共和国” 会匹配“中华”,“人民”,“共和国”这三个中的任一一个。如果只想匹配“中华人民共和国”这个关键字而不是上面的三个,则需要把math改成 match_phrase进行完全匹配。
![[BJDCTF2020]Easy MD51](https://img-blog.csdnimg.cn/img_convert/57829304e2c0456a965417ab09d32338.png)


















