Не согласован запрос диапазона даты и времени в Elasticsearch - PullRequest
0 голосов
/ 08 октября 2018

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

Моя searchdata функция выглядит следующим образом

 def search_data_attributes
{
  tag: tags.map { |t| t.name.downcase },
  trait: person_traits.map { |pt| format('%s:%s', traits.find(pt.trait_id).name.downcase, pt.value.downcase) },
  question: questions.map(&:id),
  answer: answers.map { |a| a.value.downcase },
  last_participated: last_participation_date.to_s,
  signup_at: signup_at.to_s,
  full_name: full_name,
  last_contacted: last_contacted
}

end

Я пытался сделать last_contacted.to_s.

Мой поисковый запрос выглядит следующим образом

{
    query: {
        range: {
            last_contacted: {
              gte: "2018-09-15",
              lte: "now"
            }
          }
    }
  }

Я пробовал использовать математическую дату, такую ​​как now-20d, но она возвращает ноль результатов.Если у меня нет gte предела, поиск по now в lte возвращает все результаты, как и ожидалось, но любое изменение, внесенное в gte, возвращает ноль результатов с использованием даты.

Я ценю любую помощь и буду рада ответить на вопросы.

Спасибо.

1 Ответ

0 голосов
/ 08 октября 2018

Попробуйте вставить формат даты:

{
  query: {
    range: {
        last_contacted: {
          gte: "01/01/2012",
          lte: "now",
          format: "dd/MM/yyyy"
        }
      }
   }
}
...