【elasticsearch-2】语法

原创
08/26 13:31
阅读数 22

语法

<REST> /<Index>/<Type>/<ID>

命令

查询所有索引 GET /_cat/indices
GET /_cat/indices?v
创建索引 PUT /user
删除索引 DELETE /user
添加文档  
删除文档  
查询文档 GET /user/_search
name字段包含“张三”或“李四”的

GET /user/_search
{
    "query": {
        "match":{"name": "张三 李四"}
    },
    "from": 0,
    "size": 20,
    "_source": ["name"]
}

匹配所有文档 GET /user/_search
{
    "query": {
        "match_all":{}
    }
}
所有name字段,包含“张三”的 GET /user/_search
{
    "query": {
        "match_phrase":{"name": "张三"}
    }
}
bool查询
所有数据中,name字段同时
包含”张三“、”李四“的
GET /user/_search
{
    "query": {
        "bool": {
            "must": [
                {"match": {"name": "张三"}},
                {"match": {"name": "李四"}},
            ],
        }
    }
}

 

bool查询
所有数据中,name字段
包含”张三“或”李四“的
GET /user/_search
{
    "query": {
        "bool": {
            "should": [
                {"match": {"name": "张三"}},
                {"match": {"name": "李四"}},
            ],
        }
    }
}

 

bool查询
所有数据中,name字段同时
不包含”张三“也不包含”李四“的
GET /user/_search
{
    "query": {
        "bool": {
            "must_not": [
                {"match": {"name": "张三"}},
                {"match": {"name": "李四"}},
            ],
        }
    }
}

 

bool查询
所有数据中,name字段
包含”张三“,但不包含”李四“的
GET /user/_search
{
    "query": {
        "bool": {
            "must": [
                {"match": {"name": "张三"}},
            ],
            "must_not": [
                {"match": {"name": "李四"}},
            ],
        }
    }
}
过滤查询
所有数据中,10<=age<=20的
GET /user/_search
{
    "query": {
        "bool": {
            "must": [
                {"match_all": {}},
            ],
            "filter": {
                "range": {"age": {"gte":10, "lte": 20}}
            }
        }
    }
}
聚合查询
根据state分组,倒序,统计state、count(id)
等同于: 
SELECT state, COUNT(*) FROM bank
GROUP BY state
ORDER BY COUNT(*) DESC

说明:
size=0 是为了不要查询文档,只要聚合结果

GET /user/_search
{
    "size": 0,
    "aggs": {
    "group_by_state": {
        "terms": {
        "field": "state.keyword"
      }
    }
  }
}

聚合查询
根据state分组,倒序,统计state、
count(id)、avg(balance)
等同于: 
SELECT state, COUNT(*), avg(balance) FROM bank
GROUP BY state
ORDER BY COUNT(*) DESC
GET /user/_search
{
  "size": 0,
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "state.keyword"
      },
      "aggs": {
        "average_balance": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  }
}
聚合查询
根据state分组,balance平均值倒序,统计state、
count(id)、avg(balance)
等同于: 
SELECT state, COUNT(*), avg(balance) FROM bank
GROUP BY state
ORDER BY avg(balance) DESC
GET /user/_search
{
  "size": 0,
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "state.keyword",
        "order": {
          "average_balance": "desc"
        }
      },
      "aggs": {
        "average_balance": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  }
}
聚合查询
根据age年龄段分组,然后按照性别分组,
然后获取balance平均值 
 
GET /user/_search
{
  "size": 0,
  "aggs": {
    "group_by_age": {
      "range": {
        "field": "age",
        "ranges": [
          {
            "from": 20,
            "to": 30
          },
          {
            "from": 30,
            "to": 40
          },
          {
            "from": 40,
            "to": 50
          }
        ]
      },
      "aggs": {
        "group_by_gender": {
          "terms": {
            "field": "gender.keyword"
          },
          "aggs": {
            "average_balance": {
              "avg": {
                "field": "balance"
              }
            }
          }
        }
      }
    }
  }
}
   
   

 

 

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部