ElasticSearch中两个日期之间的字段总和

时间:2020-08-27 18:19:49

标签: elasticsearch kibana elasticsearch-aggregation

我是ElasticSearch的新手

我想对两个日期(2020年8月27日至2020年8月31日)之间的工资加起来,而我无法实现。

我在这里发布简单查询和查询结果。

我阅读了有关日期直方图的信息,但找不到具体答案,如果结果很简单,那么为什么日期直方图要求设置间隔并返回存储桶中的数据。

员工索引中的文档是

{
    "took": 3,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 3,
            "relation": "eq"
        },
        "max_score": 1.0,
        "hits": [
            {
                "_index": "employees",
                "_type": "_doc",
                "_id": "wO8AMXQBDHla7ClA8iDV",
                "_score": 1.0,
                "_source": {
                    "FirstName": "JOYE",
                    "LastName": "WIATR",
                    "Designation": "CEO",
                    "Salary": 144000,
                    "DateOfJoining": "25/05/2009",
                    "Address": "9068 SW. Grove St. Waynesboro, PA 17268",
                    "Gender": "Female",
                    "Age": 58,
                    "MaritalStatus": "Unmarried",
                    "Interests": "Renting movies,Scuba Diving,Snowboarding,Butterfly Watching,Dumpster Diving,Badminton,Church/church activities"
                }
            },
            {
                "_index": "employees",
                "_type": "_doc",
                "_id": "wu8CMXQBDHla7ClAwCDT",
                "_score": 1.0,
                "_source": {
                    "FirstName": "Ajay",
                    "LastName": "Jaiswal",
                    "Designation": "CEO",
                    "Salary": 44000,
                    "DateOfJoining": "28/08/2020",
                    "Address": "Hyderabad",
                    "Gender": "Male",
                    "Age": 29,
                    "MaritalStatus": "Unmarried",
                    "Interests": "Watching movies , learing from scratch"
                }
            },
            {
                "_index": "employees",
                "_type": "_doc",
                "_id": "w-8KMXQBDHla7ClAICC9",
                "_score": 1.0,
                "_source": {
                    "FirstName": "MR.X",
                    "LastName": "Jaiswal",
                    "Designation": "CEO",
                    "Salary": 56000,
                    "DateOfJoining": "30/08/2020",
                    "Address": "Hyderabad",
                    "Gender": "Male",
                    "Age": 39,
                    "MaritalStatus": "Married",
                    "Interests": "Watching movies,Watching war movies"
                }
            }
        ]
    }
}

这是我的查询

 {
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "DateOfJoining": {
              "gte": "27/08/2020",
              "lte": "31/08/2020"
            }
          }
        }
      ]
    }
  }
}

这是查询的结果

{
    "took": 11,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 2,
            "relation": "eq"
        },
        "max_score": 1.0,
        "hits": [
            {
                "_index": "employees",
                "_type": "_doc",
                "_id": "wu8CMXQBDHla7ClAwCDT",
                "_score": 1.0,
                "_source": {
                    "FirstName": "Ajay",
                    "LastName": "Jaiswal",
                    "Designation": "CEO",
                    "Salary": 44000,
                    "DateOfJoining": "28/08/2020",
                    "Address": "Hyderabad",
                    "Gender": "Male",
                    "Age": 29,
                    "MaritalStatus": "Unmarried",
                    "Interests": "Watching movies , learing from scratch"
                }
            },
            {
                "_index": "employees",
                "_type": "_doc",
                "_id": "w-8KMXQBDHla7ClAICC9",
                "_score": 1.0,
                "_source": {
                    "FirstName": "MR.X",
                    "LastName": "Jaiswal",
                    "Designation": "CEO",
                    "Salary": 56000,
                    "DateOfJoining": "30/08/2020",
                    "Address": "Hyderabad",
                    "Gender": "Male",
                    "Age": 39,
                    "MaritalStatus": "Married",
                    "Interests": "Watching movies,Watching war movies"
                }
            }
        ]
    }
}

我真的无法实现

1 个答案:

答案 0 :(得分:1)

我想对两个日期(2020年8月27日至2020年8月31日)之间的工资加起来,而我无法实现。

尝试以下查询:

{
  "size": 0,
  "query": {
    "range": {
      "DateOfJoining": {
        "gte": "27/08/2020",
        "lte": "31/08/2020"
      }
    }
  },
  "aggs": {
    "sum_of_salary": {
      "sum": {
        "field": "Salary"
      }
    }
  }
}

我阅读了有关日期直方图的信息,但找不到具体答案,并且 如果结果非常简单,那么为什么日期直方图要求输入 间隔,并返回存储桶中的数据。

在日期直方图中,数据是根据某个时间段进行存储的。

例如,如果您想获得每月支付给员工的薪水总额,则日期直方图将对您有所帮助。