Elasti c поисковый запрос агрегации возвращает результаты с 1970 года? - PullRequest
0 голосов
/ 12 февраля 2020

Привет, я новичок в elasti c search. я выполняю следующий запрос / запрос на отдых elasti c поиск. Я пытаюсь получить гистограмму на один год. однако результаты возвращают данные с 1970 года вместо данных с прошлого года по этот год.

curl -X GET "10.10.9.1:9200/mep-reports*/_search?pretty&size=0" -H 'Content-Type: application/json' -d'
{
"query": {

     "bool": {

       "must": [
         { "range": { "@timestamp": {"gte": "now-1y/y" , "lt": "now"}}}
      ]
   }
 },

 "aggs" : {
        "sales_over_time" : {
            "date_histogram" : {
                "field" : "submission_ts",
                "interval" : "day",
                "format": "yyyy-MM-dd hh:mm:ss"
            }                              
        }                                   
    }             

}' 

Ниже приводится ответ, который я получаю. если вы проверите key_as_string, вы увидите, что он начинается с 1970 года. мой вопрос почему он игнорирует указанный диапазон ( { "range": { "@timestamp": {"gte": "now-1y/y" , "lt": "now"}}})

{
  "took" : 22,
  "timed_out" : false,
  "_shards" : {
    "total" : 12,
    "successful" : 12,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1073013,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "sales_over_time" : {
      "buckets" : [
        {
          "key_as_string" : "1970-01-19 12:00:00",
          "key" : 1555200000,
          "doc_count" : 1016510
        },
        {
          "key_as_string" : "1970-01-20 12:00:00",
          "key" : 1641600000,
          "doc_count" : 0
        },
        {
          "key_as_string" : "1970-01-21 12:00:00",
          "key" : 1728000000,
          "doc_count" : 0
        },
        {
          "key_as_string" : "1970-01-22 12:00:00",
          "key" : 1814400000,
          "doc_count" : 0
        },
        {
          "key_as_string" : "1970-01-23 12:00:00",
          "key" : 1900800000,
          "doc_count" : 0
        },
        {
          "key_as_string" : "1970-01-24 12:00:00",
          "key" : 1987200000,
          "doc_count" : 0
        },
        {
          "key_as_string" : "1970-01-25 12:00:00",
          "key" : 2073600000,
          "doc_count" : 0
        },
}

1 Ответ

0 голосов
/ 13 февраля 2020

Ваш запрос находится в поле @timestamp, но ваша агрегация включена в submission_ts.

Если вы хотите, чтобы ваша агрегация date_histogram была ограничена запросом, вам нужно использовать то же поле в и запрос и агрегация.

curl -X GET "10.10.9.1:9200/mep-reports*/_search?pretty&size=0" -H 'Content-Type: application/json' -d'
{
"query": {

     "bool": {

       "must": [
         { "range": { "submission_ts": {"gte": "now-1y/y" , "lt": "now"}}}
      ]
   }
 },

 "aggs" : {
        "sales_over_time" : {
            "date_histogram" : {
                "field" : "submission_ts",
                "interval" : "day",
                "format": "yyyy-MM-dd hh:mm:ss"
            }                              
        }                                   
    }             

}' 
...