0

私は ES Date Histogramを使用していますが、奇妙な動作が発生し始めました。なぜだろうと思っています。

これは私がelasticsearchに送信しているリクエストです:

{
   "from": 0,
   "size": 0,
   "query": {
      "filtered": {
         "filter": {
            "and": [
               {
                  "bool": {
                     "must": [
                        {
                           "range": {
                              "publishTime": {
                                 "from": "2010-07-02T12:15:20.000Z",
                                 "to": "2015-07-08T12:43:59.000Z"
                              }
                           }
                        }
                     ]
                  }
               }
            ]
         }
      }
   },
   "aggs": {
      "agg|date_histogram|publishTime": {
         "date_histogram": {
            "field": "publishTime",
            "interval": "1d",
            "min_doc_count": 0
         }
      }
   }
}

私が得ている結果はバケットであり、最初のバケットは次のとおりです。

{
   "key_as_string": "2010-08-24T00:00:00.000Z",
   "key": 1282608000000,
   "doc_count": 1
}

だから私は2010-07-02からフィルタリングし、2010-08-24からのみ結果を取得しています

これは単なる例です。この動作は、さらに多くのバケットが欠落している場合 (数か月) にも見られました。

[編集] これは最初の結果の日付と相関しているようです。つまり、その時間範囲の最初の結果は 2010 年 8 月 24 日のものですが、私が含めたように"min_doc_count": 0、その範囲全体から結果が得られると期待しています。

4

1 に答える 1

2

min_doc_countフィルターに一致した最初と最後のドキュメント間の空のバケットを返す場合にのみ十分です。範囲全体の結果を取得したい場合は、extended_bounds以下も使用する必要があります。

  "aggs": {
      "agg|date_histogram|publishTime": {
         "date_histogram": {
            "field": "publishTime",
            "interval": "1d",
            "min_doc_count": 0
            "extended_bounds": {
                "min": 1278072920000, 
                "max": 1436359439000
            }
         }
      }
   }
于 2015-10-01T12:09:18.573 に答える