gpt4 book ai didi

Elasticsearch 需要找到在本周过生日的用户

转载 作者:行者123 更新时间:2023-12-03 01:15:57 24 4
gpt4 key购买 nike

我是 Elasticsearch 的新手
我的索引中有一个用户列表。我的数据中有生日键,它在 unix 时间戳中。
现在我想找到本周即将生日的用户!正如我们可以在 MYSQL 中使用 Date 和 Month 找到的那样。
我已经尝试过设置日期格式:yyyy-MM-dd 但我仍然无法得到它
我创建了一个新 key ,并以添加的日期格式:dd-MM。使用范围条件对我有用!
我对 dd-MM 甲酸盐进行了如下尝试

GET /demo/_search
{
"query": {
"range": {
"birth_date_format": {
"gte": "30-06",
"lte": "30-06",
"format": "dd-MM"
}
}
}
}
但我想通过 yyyy-MM-dd 或时间戳找到出生日期,我该怎么做呢?否则我可以通过 dd-MM 通过添加新 key 来完成

最佳答案

解释:now - 6d = 从今天开始减去 6 天/w = 四舍五入到最近的一周
它被称为 date math在 Elasticsearch 中。

{
"_source":["birth_date_format"],
"query": {
"range": {
"birth_date_format": {
"gt": "now-6d/w",
"lt":"now+6d/w"
}
}
},
"size":100

}
这将为您解决问题。
样本数据:
[
{

"_source": {
"birth_date_format": "2020-06-23"
}
},
{

"_source": {
"birth_date_format": "2020-06-22"
}
},
{

"_source": {
"birth_date_format": "2020-06-21"
}
},
{

"_source": {
"birth_date_format": "2020-06-20"
}
},
{

"_source": {
"birth_date_format": "2020-06-19"
}
},
{

"_source": {
"birth_date_format": "2020-06-18"
}
},
{

"_source": {
"birth_date_format": "2020-06-17"
}
},
{

"_source": {
"birth_date_format": "2020-06-16"
}
},
{

"_source": {
"birth_date_format": "2020-06-15"
}
},
{

"_source": {
"birth_date_format": "2020-06-26"
}
},
{

"_source": {
"birth_date_format": "2020-06-28"
}
},
{

"_source": {
"birth_date_format": "2020-06-27"
}
},
{

"_source": {
"birth_date_format": "2020-06-29"
}
}
]
输出:
"hits": [
{

"_source": {
"birth_date_format": "2020-06-23"
}
},
{

"_source": {
"birth_date_format": "2020-06-22"
}
},
{

"_source": {
"birth_date_format": "2020-06-26"
}
},
{
"_source": {
"birth_date_format": "2020-06-28"
}
},
{

"_source": {
"birth_date_format": "2020-06-27"
}
}
]
更新:
  • Elasticsearch 将日期存储为毫秒 - 计算它需要年份选项的毫秒数。
  • (内置日期格式)[https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html#built-in-date-formats] 没有格式年。
  • 选项1:
  • 您可以像现在一样索引生日
  • 您需要索引 birth Month作为另一个字段
  • 您需要索引 birth date作为另一个字段
  • 您可以使用这两个字段进行查询。

  • scripting 的帮助下无法做到这一点也因为我们需要获取当前年份来进行计算。
  • 关于Elasticsearch 需要找到在本周过生日的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62555284/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com