← 返回首页
Elasticsearch-查询
发表时间:2021-10-19 21:56:40
Elasticsearch-查询

1.条件查询

假设students索引有以下初始数据。

#查询所有学生
GET /students/_doc/_search
{
  "query":{
    "match_all": {}
  }
}

#查询所有学生,从1开始返回2条数据
GET /students/_doc/_search
{
  "query":{
    "match_all": {}
  },
  "from":1,
  "size":2
}

#查询学号为s0003的学生
GET /students/_doc/_search
{
  "query":{
    "match_phrase": {
      "sid": "s0003"
    }
  }
}

#查询姓名为'赵云'的学生
GET /students/_doc/_search
{
  "query":{
    "match_phrase": {
      "sname": "赵"
    }
  }
}


#查询姓'赵'的学生
GET /students/_doc/_search
{
  "query":{
    "match_phrase_prefix": {
      "sname": "赵"
    }
  }
}
或者
GET /students/_doc/_search
{
  "query":{
    "match": {
      "sname": "赵"
    }
  }
}


#查询性别为'男'且姓名为'赵云'
GET /students/_doc/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "gender": "男"
          }
        },
        {
          "match_phrase": {
            "sname": "赵云"
          }
        }
      ]
    }
  }
}

#查询姓名为'赵云'或者分数是100的学生
GET /students/_doc/_search
{
  "query": {
    "bool":{
      "should": [
        {
          "match_phrase": {
            "sname": "赵云"
          }
        },

        {  
          "match_phrase": {
            "score": "100"
          }
        }
      ]
    }
  }
}

#按学号降序
GET /students/_doc/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "sid": {
        "order": "desc"
      }
    }
  ]
}

ES的Full text queries 表见下图:

2.聚合查询


# 对成绩字段聚合查询,统计总分,最高分,最低分和平均分
GET /students/_doc/_search
{
  "aggs":{
    "score_statistic":{
      "stats":{
        "field": "score"
      }
    }
  }
}

返回结果:

"aggregations": {
    "score_statistic": {
      "count": 6,
      "min": 67,
      "max": 100,
      "avg": 85.33333333333333,
      "sum": 512
    }
  }