что происходит при выполнении запроса на совпадение в поле даты - PullRequest
1 голос
/ 01 марта 2020

Почему я могу выполнить запрос следующего типа:

GET myindex/_search
{
  "query": {
    "bool" : {
      "must": [
        {"match": {"@timestamp": "454545645656"}}
      ]
    } 
  }
}

, если тип поля следующий?

"mappings": {
  "fluentd": {
    "properties": {
      "@timestamp": {
        "type": "date"
      },

имеет ли смысл? Значение запроса проходит анализатор и сравнивает поле с чем?

1 Ответ

1 голос
/ 01 марта 2020

Нет, даже если вы используете запрос на совпадение в поле date, и сопоставление анализируется, значит, оно проходит через те же анализаторы, которые были применены во время индексации в поле. Как объяснено в официальной ES, делают c.

Но, как объяснено в официальной ES, делают c на дате тип данных .

Запросы по датам внутренне преобразуются в запросы диапазона для этого длинного представления.

Вы можете проверить это самостоятельно, используя параметр объяснения = true в своем поисковом запросе. Более подробную информацию об API объяснения можно найти здесь .

Я сделал это для вашего поискового запроса, и вы можете видеть, что в результате (часть объяснения) он показывает запрос диапазона в поле даты.

URL: - / _search? Объяснять = true

"hits": [
            {
                "_shard": "[date-index][0]",
                "_node": "h2H2MJd5T5-b1cUSkHVHcw",
                "_index": "date-index",
                "_type": "_doc",
                "_id": "1",
                "_score": 1.0,
                "_source": {
                    "@timestamp": "454545645656"
                },
                "_explanation": {
                    "value": 1.0,
                "description": "@timestamp:[454545645656 TO 454545645656]", --> see range query
                "details": []
                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...