Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ElasticSearch EJS查询以获取缺少的字段_Javascript_Database_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Javascript,Database,elasticsearch" /> elasticsearch,Javascript,Database,elasticsearch" />

Javascript ElasticSearch EJS查询以获取缺少的字段

Javascript ElasticSearch EJS查询以获取缺少的字段,javascript,database,elasticsearch,Javascript,Database,elasticsearch,我有一个现有的ejs查询,如下所示: let queryBody = ejs.Request() .size(0) .query( ejs.BoolQuery() .must( ejs.RangeQuery('hour_time_stamp').gte(this.lastDeviceDate).lte(this.lastDeviceDate) ) ) .agg(ejs.

我有一个现有的ejs查询,如下所示:

let queryBody = ejs.Request()
      .size(0)
      .query(
        ejs.BoolQuery()
          .must(
            ejs.RangeQuery('hour_time_stamp').gte(this.lastDeviceDate).lte(this.lastDeviceDate)
          )
      )
      .agg(ejs.TermsAggregation('market_agg').field('market').order('sum', 'asc').size(50000)
        .agg(ejs.SumAggregation('sum').field('num_devices'))
      )
当前,字段(“市场”)返回存在市场数据的值。数据库中也有缺失市场价值的数据,我需要访问这些数据。我该怎么做


编辑: ES中的市场值为空或缺少字段。我编写了ES查询来获取所有这些字段,但我无法为相同的字段合并ejs查询。你知道怎么做吗

{
  "query": {
    "bool": {
      "should": [
        {
          "exists": {
            "field": "market"
          }
        },
        {
          "bool": {
            "must_not": [
              {
                "exists": {
                  "field": "market"
                }
              }
            ]
          }
        }
      ]
    }
  }
}

根据您的问题,您也需要一种将空市场字段分组的方法。 因此,您可以使用“缺少”值参数。它定义了丢失的值(如您的情况)的分组方式。因此,json形式的查询将进行如下修改:-

{
"query":
    {
        "must": [
            "range": {
                "hour_time_stamp": {
                    "gte": lastDeviceDate,
                    "lte": lastDeviceDate
                }
            }
        ]
    },
    "aggs": {
        "market_agg" : {
            "market": {
                "missing": "empty_markets",
                "order": { "sum": "asc" }
            }
        },
        "sum_agg": {
            "sum" : { "field" : "num_devices" }
        }
    }
}
或者在您的代码中,可以通过添加缺少的参数来完成

let queryBody = ejs.Request()
      .size(0)
      .query(
        ejs.BoolQuery()
          .must(
            ejs.RangeQuery('hour_time_stamp').gte(this.lastDeviceDate).lte(this.lastDeviceDate)
          )
      )
      .agg(ejs.TermsAggregation('market_agg').field('market').missing('empty_markets').order('sum', 'asc').size(50000)
        .agg(ejs.SumAggregation('sum').field('num_devices'))
      )

我已经用我的进度编辑了这个问题。你能看看ashutosh吗?