最近在使用es查询某个字段在特定查询条件下的某个字段的求和时,忘记了query语句是怎么写的,简单记录一下,方便自己和他人查阅。

一 什么是elasticsearch?

elasticsearch是一个分布式的使用 REST 接口的搜索引擎,简称为ES,它是面向文档的,可以存储整个对象或文档。

二:elasticsearch的几种操作

1 对某个字段求和,相当于sql语句的:

select sum(字段名) from table where 条件1  and 条件2
#对某个字段求和操作

{
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "条件1": {
              "gte": "2022-05-08",
              "lte": "2022-05-14"
            }
          }
        },
        {
          "match": {
            "条件1": "***"
          }
        }
      ],
      "must_not": [],
      "should": []
    }
  },
  "from": 0,
  "size": 0,
  "sort": [],
  "aggs": {
    "求和后叫的字段名": {
      "sum": {
        "field": "求和字段"
      }
    }
  }
}

2 根据多个字段进行分组,相当于sql语句的:

select * from table where 条件1 and 条件2 group by XXX,YYY
#根据多个字段进行聚合

{
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "条件1": {
              "gte": "2022-05-08",
              "lte": "2022-05-08"
            }
          }
        },
        {
          "match": {
            "条件2": "J00371"
          }
        }
      ],
      "must_not": [],
      "should": []
    }
  },
  "from": 0,
  "size": 0,
  "sort": [],
  "aggregations": {
    "分组字段1": {
      "terms": {
        "field": "es索引中的字段1"
      },
      "aggregations": {
        "分组字段2": {
          "terms": {
            "field": "es索引中的字段2"
          }
        }
      }
    }
  }
}

3、向es中插入数据,相当于sql的:

insert into table (字段名1,字段名2,…………) VALUES (字段1的值,字段2的值,……);
PUT /索引名/type/8000
{
    "filed1": "value1",
    "filed2": "value2",
    "filed3": "value3",
    ………………
}

 

4、删除es的某复合条件的记录,相当于sql的:

delete from table where condition1 and condition2
{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "condition1": "condition1"
                    }
                }
            ],
            "must_not": [],
            "should": []
        }
    }
}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐