【问题标题】:Elasticsearch - I want to search for exact birthday that a user search for (eg. 03221989) and the upcoming birthdaysElasticsearch - 我想搜索用户搜索的确切生日(例如 03221989)和即将到来的生日
【发布时间】:2018-11-01 02:34:57
【问题描述】:

我的索引中有一个生日日期字段(格式:MMddyyyy||MMdd)。我想搜索用户搜索的确切生日(例如 03221989)和即将到来的生日。我能够得到确切的生日。但是对于即将到来的生日,我尝试了:

  • 范围查询 - "gte" : "now" -> 它不起作用,因为 now 也有一个年份字段,我也想查找 03221989 类型的生日
  • 范围查询 - "gte" : "03221989" -> 这样我就可以按月份的升序对记录进行排序

在我的索引中,我有 3 条记录:

"Birthday": "03221979"
"Birthday": "05271988"
"Birthday": "04161990"

我希望 elasticsearch 查询以月的升序返回我,而与年份无关。返回数据应该是:

"Birthday": "03221979"
"Birthday": "04161990"
"Birthday": "05271988"

【问题讨论】:

  • 请提供示例文档和映射

标签: elasticsearch


【解决方案1】:

您可以使用范围查询并在其中指定甲酸盐。

GET _search
{
  "sort": [
    {
      "dateofbirth": {
        "order": "asc"
      }
    }
  ],
  "query": {
    "range": {
      "dateofbirth": {
        "gte": "03221989",
        "format": "MMddyyyy||yyyy||MMdd"
      }
    }
  }
}

类似的东西。

【讨论】:

  • 感谢您的快速回复。实际上我已经尝试过了,但这对按升序获取数据没有帮助。 "Birthday": "03221979" "Birthday": "01221978" "Birthday": "04161990" "Birthday": "05271988" 这是不是月份升序的查询结果。
  • 非常欢迎您告诉我这是否解决了您的问题。
  • 但它无助于按升序获取数据。 "Birthday": "03221979" "Birthday": "01221978" "Birthday": "04161990" "Birthday": "05271988" 这是不是月份升序的查询结果。
  • @ArpanSahoo 请检查更新的答案添加排序在那里。
  • 已经添加了。。但是有一个问题。假设 Elasticsearch 中的记录是 "Birthday": "03221979" "Birthday": "12221978" "Birthday": "01161990" 而我正在搜索 "Birthday": "03221979",那么上面的查询输出只有 "Birthday" : "03221979" "Birthday": "12221978" ... 12 日(即 12 月)之后它不再从一月开始显示(即 "Birthday": "01161990" - 此记录)
猜你喜欢
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-16
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多