【发布时间】:2020-11-17 20:54:56
【问题描述】:
我在 Elasticsearch 中有一个企业索引。索引中的每个文档代表一个业务,每个业务都有 business_hours。我正在尝试使用星期几和时间来过滤营业时间。例如,我们希望能够为 向我们展示所有周二晚上 6:00 PM 之后营业的商家做一个过滤器 我在想我们应该有一个具有以下映射的字段:
{
"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"
}
}
}
]
}
}
}
【问题讨论】:
标签: elasticsearch elasticsearch-dsl