首页 > 解决方案 > Elasticsearch DateTime 范围查询不一致

问题描述

我正在尝试在 rails 应用程序中使用带有 searchkick 的弹性搜索来查询日期范围。我尝试了很多事情,但这是目前的状态。我正在尝试搜索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
}

结尾

我试过制作last_contacted.to_s.

我的搜索查询如下所示

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

我尝试过使用日期数学,例如now-20d但返回零结果。如果我没有gte限制搜索,now则按lte预期返回所有结果,但我所做的任何更改都gte使用 datemath 返回零结果。

我感谢任何帮助,并很乐意回答问题。

谢谢你。

标签: ruby-on-railsrubyelasticsearchsearchkick

解决方案


尝试插入日期的格式:

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

推荐阅读