ElasticSearch扩展了超出范围而没有数据/ hitdocs

时间:2017-09-27 12:53:34

标签: elasticsearch

我有一个没有hitdoc存在的范围。当在此无数据范围内使用extended_bounds运行基于date_histogram聚合的查询时,不会返回任何内容。

但是,对于至少有1个hitdoc的范围,将使用extended_bounds指定的范围返回存储桶数据。

如何在没有hitdocs的范围内取得类似的结果?

示例查询 -

{
  "size": 0,
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "kind": "hit-search"
              }
            },
            {
              "range": {
                "startTime": {
                  "gte": 1506429661000,
                  "lte": 1506516061000
                }
              }
            }
          ]
        }
      }
    }
  },
  "aggs": {
    "perHost": {
      "terms": {
        "field": "user"
      },
      "aggs": {
        "ts": {
          "date_histogram": {
            "field": "startTime",
            "interval": "30m",
            "min_doc_count": 0,
            "extended_bounds": {
              "min": 1506429661000,
              "max": 1506516061000
            }
          },
          "aggs": {
            "numQuery": {
              "cardinality": {
                "field": "queryId"
              }
            }
          }
        }
      }
    }
  },
  "from": 0
}

1 个答案:

答案 0 :(得分:0)

可以使用missing聚合。更新后,上面的查询看起来像这样 -

{
  "size": 0,
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "kind": "hit-search"
              }
            },
            {
              "range": {
                "startTime": {
                  "gte": 1506429661000,
                  "lte": 1506516061000
                }
              }
            }
          ]
        }
      }
    }
  },
  "aggs": {
    "perHost": {
      "missing": {
        "field": "user"
      },
      "aggs": {
        "ts": {
          "date_histogram": {
            "field": "startTime",
            "interval": "30m",
            "min_doc_count": 0,
            "extended_bounds": {
              "min": 1506429661000,
              "max": 1506516061000
            }
          },
          "aggs": {
            "numQuery": {
              "cardinality": {
                "field": "queryId"
              }
            }
          }
        }
      }
    }
  },
  "from": 0
}

观察 - extended_bounds似乎不适用于missing