Фильтр терминов по ключевому слову лучше, чем date_range при совпадении точных дней? - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь выяснить, какой способ лучше запрашивать, но мои тесты не дают окончательных результатов, возможно, потому, что я не могу генерировать достаточно данных локально.

Рассмотрим это сопоставление:

{
  "mappings": {
    "_doc": {
      "properties": {
        "day": {
          "type": "date",
          "format": "yyyyMMdd",
          "fields": {
              "keyword" : {
                  "type" : "keyword"
              }
          }
        },
        ... other stuff ...
      }
    }
  }
}

При поиске непрерывного диапазона дат (например, с 20191001 по 20191010) я могу использовать terms или date_range, что имеет больше преимуществ с точки зрения производительности, кэширования или использования памяти?

Использованиеterms:

{
  "query" : {
    "bool" : {
      "must" : [
          { 
            "terms" : { 
              "day.keyword" : [ 
                "20191001", 
                "20191002", 
                "20191003",
                "20191004", 
                "20191005", 
                "20191006",
                "20191007", 
                "20191008", 
                "20191009",
                "20191010"
              ] 
            }
          } 
      ]
    }
  }
}

Использование date_range:

{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "day": {
              "gte": "20191001",
              "lte": "20191010"
            }
          }
        }
      ]
    }
  }
}

1 Ответ

0 голосов
/ 21 октября 2019

Подумайте о сценарии, в котором вы хотите выбрать данные в период с 17 января по 19 января. Вы должны указать все даты в терминах запроса. По мере увеличения дальности ваш вклад также увеличивается.

Как следует из названия, запрос диапазона предназначен для запроса записей, указанных между непрерывным диапазоном.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...