elasticsearch,Json,elasticsearch" /> elasticsearch,Json,elasticsearch" />

Json 我需要合并两个Elasticsearch查询还是可以使用or类型运算符?

Json 我需要合并两个Elasticsearch查询还是可以使用or类型运算符?,json,elasticsearch,Json,elasticsearch,我有两个Elasticsearch查询(通过R中的elastic包使用) 一个查询收集加载功能的次数,另一个查询收集卸载功能的次数 我的需求现在发生了变化,我需要在同一个数据集中同时收集两种类型的数据/状态(状态可以是TRUE或FALSE,我想在同一个数据集中收集这两种数据/状态) 我想做什么:识别可见的为真的或假的两种情况 因此,我想知道最好的方法是什么:我应该(尝试)合并查询,还是应该使用或类型的运算符 如果是后者,我会怎么做 为了完整起见,以下是我的简化查询(未统一的版本在问题的末尾):

我有两个Elasticsearch查询(通过R中的
elastic
包使用)

一个查询收集加载功能的次数,另一个查询收集卸载功能的次数

我的需求现在发生了变化,我需要在同一个数据集中同时收集两种类型的数据/状态(状态可以是
TRUE
FALSE
,我想在同一个数据集中收集这两种数据/状态)

我想做什么:识别
可见的
真的
假的两种情况

因此,我想知道最好的方法是什么:我应该(尝试)合并查询,还是应该使用
类型的运算符

如果是后者,我会怎么做

为了完整起见,以下是我的简化查询(未统一的版本在问题的末尾):


loads\u body是的,您可以使用单个查询和子聚合来完成所需的操作。类似于

{
   "query":{
      "bool":{
         "must":[
            {
               "match":{
                  "merchant":"a6xzTHtpQs"
               }
            },
            {
               "range":{
                  "time":{
                     "gte":"2018-04-02T06:00:00",
                     "lte":"2018-04-03T05:59:59",
                     "time_zone":"+00:00"
                  }
               }
            }
         ]
      }
   },
   "aggs":{
      "Visible_agg":{
         "terms":{
            "field":"visible"
         },
         "aggs":{
            "daily":{
               "date_histogram":{
                  "field":"time",
                  "interval":"hour",
                  "time_zone":"+00:00",
                  "min_doc_count":0,
                  "extended_bounds":{
                     "min":"2018-04-02T06:00:00",
                     "max":"2018-04-03T05:59:59"
                  }
               }
            }
         }
      }
   }
}
这将在两个桶中生成直方图,一个用于“可见”:true,另一个用于“可见”:false
这就是你要找的吗?

谢谢,@sramalingam24。这几乎就是我要寻找的,但我很难将其平坦化,因为它会产生一个由两行(true和false)组成的数据帧,然后是针对每行存储的关联数据列表。为了展平数据帧,我使用了来自JSON的
(toJSON(plugins\u connection$aggregations$Visible\u agg$bucket),flatte=TRUE)
。我认为解决方案是切换聚合,以便按日期聚合结果,并将可见性分配给每个实例。简而言之,我想在第一个实例中聚合日期(直方图)。我怎样才能做到这一点?dataframe中是否有一个melt函数可以为您做到这一点?您可以尝试反转聚合顺序。我尝试反转聚合顺序,但仍然留下最后一列,其中包含我无法熔化的数据列表,因为:
无法熔化数据。具有非原子“度量”列的帧
。每个列表项都包含一个由3个变量组成的
data.frame
。我对python不太熟悉,所以不知道如何处理dataframesI所见的列表。我现在就试试。(仅供参考:
data.frame
也是R中常见的数据结构。)
unloads_body <- '{"size":0,"query":{"bool":{"must":[{"match":{"merchant":"a6xzTHtpQs"}},{"term":{"visible":false}},{"range":{"time":{"gte":"2018-04-02T06:00:00","lte":"2018-04-03T05:59:59","time_zone":"+00:00"}}}]}},"aggs":{"daily":{"date_histogram":{"field":"time","interval":"hour","time_zone":"+00:00","min_doc_count":0,"extended_bounds":{"min":"2018-04-02T06:00:00","max":"2018-04-03T05:59:59"}}}}}'
loads_body <- '{
    "size":0,
    "query": {
        "bool": {
            "must":[ {
                "match": {
                    "merchant": "a6xzTHtpQs"
                }
            }
            ,
            {
                "term": {
                    "visible": true
                }
            }
            ,
            {
                "range": {
                    "time": {
                        "gte": "2018-04-02T06:00:00", "lte": "2018-04-03T05:59:59", "time_zone": "+00:00"
                    }
                }
            }
            ]
        }
    }
    ,
    "aggs": {
        "daily": {
            "date_histogram": {
                "field":"time",
                "interval":"hour",
                "time_zone":"+00:00",
                "min_doc_count":0,
                "extended_bounds": {
                    "min": "2018-04-02T06:00:00", "max": "2018-04-03T05:59:59"
                }
            }
        }
    }
}'
unloads_body <- '{
    "size":0,
    "query": {
        "bool": {
            "must":[ {
                "match": {
                    "merchant": "a6xzTHtpQs"
                }
            }
            ,
            {
                "term": {
                    "visible": false
                }
            }
            ,
            {
                "range": {
                    "time": {
                        "gte": "2018-04-02T06:00:00", "lte": "2018-04-03T05:59:59", "time_zone": "+00:00"
                    }
                }
            }
            ]
        }
    }
    ,
    "aggs": {
        "daily": {
            "date_histogram": {
                "field":"time",
                "interval":"hour",
                "time_zone":"+00:00",
                "min_doc_count":0,
                "extended_bounds": {
                    "min": "2018-04-02T06:00:00", "max": "2018-04-03T05:59:59"
                }
            }
        }
    }
}'
{
   "query":{
      "bool":{
         "must":[
            {
               "match":{
                  "merchant":"a6xzTHtpQs"
               }
            },
            {
               "range":{
                  "time":{
                     "gte":"2018-04-02T06:00:00",
                     "lte":"2018-04-03T05:59:59",
                     "time_zone":"+00:00"
                  }
               }
            }
         ]
      }
   },
   "aggs":{
      "Visible_agg":{
         "terms":{
            "field":"visible"
         },
         "aggs":{
            "daily":{
               "date_histogram":{
                  "field":"time",
                  "interval":"hour",
                  "time_zone":"+00:00",
                  "min_doc_count":0,
                  "extended_bounds":{
                     "min":"2018-04-02T06:00:00",
                     "max":"2018-04-03T05:59:59"
                  }
               }
            }
         }
      }
   }
}