sách gpt4 ai đã đi

elasticsearch - 按星期几和时间过滤 Elasticsearch

In lại 作者:行者123 更新时间:2023-12-04 15:12:50 28 4
mua khóa gpt4 Nike

我在 Elasticsearch 中有一个企业索引。索引中的每个文档代表一个业务,每个业务都有business_hours。我试图允许使用星期几和时间过滤营业时间。例如,我们希望能够进行过滤,以显示我们在星期二晚上 6:00 之后营业的所有业务
我认为我们应该有一个具有以下映射的字段:

  {
"mappings": {
"properties": {

"business_hours": {
"type": "date_range",
"format": "w'T'hh:mma"
}
}
}
}
然后,每个文档都有一个 business_hours 数组。
因此,周一上午 9:00 - 下午 5:00 和周二上午 9:30 - 下午 5:00 营业的商店将如下所示:
POST my-index/_doc
{
"name": "My Store",
"business_hours": [
{
"gte": "1T09:00AM",
"lte": "1T05:00PM"
},
{
"gte": "2T09:30AM",
"lte": "2T05:00PM"
}
]
}
我试图搜索此文档并查询它,但小时的过滤器不起作用,它们看起来像是被忽略了....
Elasticsearch 是否支持按星期几进行过滤,还是需要是实际的日期时间?
这是我使用的查询。它应该过滤周三营业的业务,但它返回了上面只有周一和周二营业时间的文档
GET my-index/_search
{
"query": {
"bool": {
"filter": [
{
"range": {
"business_hours": {
"gte": "3T10:00AM",
"lte": "3T05:00PM",
"relation": "CONTAINS"
}
}
}
]
}
}
}

1 Câu trả lời

sử dụng phạm vi 的想法领域是一个很好的。但是,而不是 date_range ,适用于绝对日期,我建议使用 integer_range field 。
由于每天包含 1440 分钟,我的建议是将营业时间编码为自午夜以来的分钟数,并在该数字前加上当天的索引(星期一 = 1、星期二 = 2 等)。将给定的小时数转换为自午夜起的分钟数的公式非常简单:

(60 * HH) + MM 

Note: HH is in 24 hours format, not AM/PM, but that's a detail
以上面的示例为例,它会产生以下结果:
POST my-index/_doc
{
"business_hours": [
{
"gte": 10540, <--- Monday (1), 540 minutes after midnight
"lte": 11020 <--- Monday (1), 1020 minutes after midnight
},
{
"gte": 20570, <--- Tuesday (2), 570 minutes after midnight
"lte": 21020 <--- Tuesday (2), 1020 minutes after midnight
}
]
}
这样 phạm vi查询变得简单,它摆脱了任何与日期相关的问题。例如,下面的查询通过搜索周一早上 6 点到下午 5 点之间营业的企业来检索上面的文档
GET my-index/_search
{
"query": {
"bool": {
"filter": [
{
"range": {
"business_hours": {
"gte": "10600", <--- Monday (1), 600 minutes after midnight
"lte": "11020", <--- Monday (1), 1020 minutes after midnight
"relation": "CONTAINS"
}
}
}
]
}
}
}

关于elasticsearch - 按星期几和时间过滤 Elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64883176/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com