Ошибка анализа даты Elasticsearch в версии 7.x - PullRequest
0 голосов
/ 09 июля 2020

Я использую Elasticsearch 7.1, и я определил формат в своих сопоставлениях индекса, как показано ниже:

 "ManufacturerDate": {
       "type": "date",
       "format": "yyyy-MM-dd'T'HH:mm:ss.SSS'ZZ'|| yyyy-MM-dd'T'HH:mm:ss.SSS'ZZ'||yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
        }

Но я получаю ошибку синтаксического анализа даты при поиске по дате - «2020-07-09T00: 12: 22.011-00: 00 ». Формат yyyy-MM-dd'T'HH: mm: ss.SSSXXX уже определен как один из принятых форматов. Ошибка

Failed to parse date field [2020-07-09T00:12:22.011-00:00] with format [yyyy-MM-dd'T'HH:mm:ss.SSS'ZZ'||yyyy-MM-dd'T'HH:mm:ss.SSS'ZZ'||yyyy-MM-dd'T'HH:mm:ss.SSSXXX]: 

Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 09 июля 2020

Добавление Рабочий пример с отображением и поисковым запросом.

Чтобы узнать больше о типе данных Date, обратитесь к этой документации . Упомянутый ниже поисковый запрос предназначен для поиска точных значений типа даты.

Чтобы вернуть документы, содержащие термины в пределах указанного диапазона, обратитесь к this

Сопоставление:

    {
  "mappings": {
    "properties": {
      "ManufacturerDate": {
       "type": "date",
       "format": "yyyy-MM-dd'T'HH:mm:ss.SSS'ZZ'||yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
        }
    }
  }
}

Поисковый запрос:

    {
  "query": {
    "term": {
      "ManufacturerDate": {
        "value": "2020-07-09T00:12:22.011-00:00"
      }
    }
  }
}'

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

"hits": [
  {
    "_index": "my_index",
    "_type": "_doc",
    "_id": "1",
    "_score": 1.0,
    "_source": {
      "ManufacturerDate": "2020-07-09T00:12:22.011-00:00"
    }
  }
]

Обновление 1:

Вы даже можете использовать Постоянный запрос оценки

Поисковый запрос:

 {
  "query": {
    "constant_score": {
      "filter": {
        "term": {
          "ManufacturerDate": "2020-07-09T00:12:22.011-00:00"
        }
      },
      "boost": 1.2
    }
  }
}

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

"hits": [
  {
    "_index": "my_index",
    "_type": "_doc",
    "_id": "1",
    "_score": 1.2,
    "_source": {
      "ManufacturerDate": "2020-07-09T00:12:22.011-00:00"
    }
  }
]

Обновление 2: при изменении порядка шаблонов запрос работает (с использованием ES версии 7.2)

Сопоставление:

    {
  "mappings": {
    "properties": {
      "ManufacturerDate": {
        "type": "date",
        "format": "yyyy-MM-dd'T'HH:mm:ss.SSSXXX||yyyy-MM-dd'T'HH:mm:ss.SSS'ZZ'||yyyy-MM-dd'T'HH:mm:ss.SSS"
      }
    }
  }
}

Данные индекса:

    {
  "ManufacturerDate": "2020-07-09T00:12:22.011-00:00"
}

Поисковый запрос:

 {
  "query": {
    "constant_score": {
      "filter": {
        "term": {
          "ManufacturerDate": "2020-07-09T00:12:22.011-00:00"
        }
      },
      "boost": 1.2
    }
  }
}

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

"hits": [
  {
    "_index": "my_index5",
    "_type": "_doc",
    "_id": "1",
    "_score": 1.2,
    "_source": {
      "ManufacturerDate": "2020-07-09T00:12:22.011-00:00"
    }
  }
]
...