Elasticsearch запрос только год с пользовательским форматом даты - PullRequest
0 голосов
/ 10 января 2019

Учитывая, что у меня есть отображение индекса следующим образом

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "date": {
          "type": "date",
          "format": "yyyy-MM-dd||yyyy||yyyy-MM"
        }
      }
    }
  }
}

это означает, что я могу помещать документы во все разрешенные типы дат если я удостоверюсь, что все документы поддерживают формат даты гггг-мм-дд, я хотел бы использовать запрос на совпадение, чтобы позволить мне выполнять поиск по различным типам, таким как предоставление документов, имеющих дату поля, следующим образом doc1 - дата: 2016-1-1 doc2 - дата: 2017-1-4 doc3 - дата: 2016-2-1

Я хочу иметь возможность использовать совпадение, чтобы предоставить запрос только в 2016 году и вернуть обратно doc2 и doc3 и я также хотел бы иметь возможность выполнять поиск с использованием 2016-1, в настоящее время упрашивающий эластичный поиск, который не заботится и не выдает никаких исключений, поскольку он должен использовать все типы дат

1 Ответ

0 голосов
/ 10 января 2019

Я думаю, что запрос диапазона - это то, что вы ищете. Я сам этим не пользовался, поэтому не могу точно сказать о синтаксисе, но что-то вроде следующего должно работать:

{
  "query": {
    "range" : {
      "born" : {
        "gte": "2016",
        "lte": "2016",
        "format": "yyyy-MM-dd||yyyy||yyyy-MM"
      }
    }
  }
}

В более ранних версиях вместо запроса использовался фильтр диапазона, но если у вас версия 5.x или новее, с диапазоном запроса все будет в порядке.

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