Запрос диапазона дат не работает в кластере elasti c 2.4 - PullRequest
0 голосов
/ 08 марта 2020

Запрос Elasticsearch с запросом диапазона дат не работает.

{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "100",
            "fields": [
              "nodeId"
            ],
            "default_operator": "and"
          }
        },
        {
          "query_string": {
            "query": "DAILY",
            "fields": [
              "aggLevel"
            ],
            "default_operator": "and"
          }
        },
        {
          "query_string": {
            "query": "23",
            "fields": [
              "replId"
            ],
            "default_operator": "and"
          }
        },
        {
          "range": {
            "sales.date": {
              "gte": "01-02-2020",
              "lte": "08-03-2020"
            }
          }
        }
      ]
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Для меня запрос диапазона работал в не вложенную дату с отображениями:

  "mappings": {
            "_default_": {
                "properties": {
                    "date": {
                        "type": "date",
                        "format": "MM-dd-yyyy"
                            }
                      }
            }}

Рабочий запрос:

{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "100",
            "fields": [
              "nodeId"
            ],
            "default_operator": "and"
          }
        },
        {
          "query_string": {
            "query": "DAILY",
            "fields": [
              "aggLevel"
            ],
            "default_operator": "and"
          }
        },
        {
          "query_string": {
            "query": "23",
            "fields": [
              "replId"
            ],
            "default_operator": "and"
          }
        },
        {
          "range": {
            "date": {
              "gte": "01-02-2020",
              "lte": "08-03-2020"
            }
          }
        }
      ]
    }
  }
}
0 голосов
/ 08 марта 2020

Вы используете неправильный формат даты, правильный yyyy-mm-dd, в то время как вы используете dd-mm-yyyy. Для получения дополнительной информации см. тип данных даты и запрос диапазона дат ES do c.

Правильный пример

Отображение индекса

{
    "mappings": {
        "my_type": {
            "properties": {
                "sales_date": {
                    "type": "date"
                }
            }
        }
    }
}

Примеры документов индекса

{
   "sales_date" :  "01-02-2020"
}

{
   "sales_date" :  "2020-02-05"
}

{
   "sales_date" :  "2020-03-08"
}
{
   "sales_date" :  "2020-03-15"
}

Поисковый запрос с date range query

{
    "query": {
        "range" : {
            "sales_date" : {
                "gte" : "2020-02-01", --> NOTE DIFFERENCE
                "lte" : "2020-03-01"
            }
        }
    }
}

Результаты поиска

"hits": [
         {
            "_index": "so-60584496",
            "_type": "my_type",
            "_id": "1",
            "_score": 1.0,
            "_source": {
               "sales_date": "2020-02-01"
            }
         },
         {
            "_index": "so-60584496",
            "_type": "my_type",
            "_id": "2",
            "_score": 1.0,
            "_source": {
               "sales_date": "2020-02-05"
            }
         }
      ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...