【发布时间】:2020-05-04 11:37:25
【问题描述】:
我在 MongoDB (4.0.3) 中使用 Elasticsearch(版本:6.8.4)
我想查找价格在 1 到 800 之间且 sale_date 大于 Date.now() 的所有文档,但我的查询有问题:
{
"query": {
"bool": {
"must": [],
"filter": {
"term": {
"sold_out": false
},
"bool": {
"should": [
{
"range": {
"sale_date": {
"gt": Date.now()
}
}
},
{
"range": {
"price": {
"gt": 1,
"lte": 800
}
}
}
]
}
}
}
},
"from": 10,
"size": 200
}
它的查询向我返回了一些价格高于 800 的产品的结果
在 Elasticsearch 中存储为 long
的价格字段我想试试:
- 使用 from: to: 得到相同的结果
- 在过滤器中将“应该”更改为“必须”,它会返回空结果
- 从查询中删除 { "range": { "sale_date": { "gt": Date.now(), } } } 并返回 正确 结果!
我做错了什么?
【问题讨论】:
-
您想要所有价格小于或等于 800 且 sale_date 大于 Date.now 的文档?您使用的是什么版本的弹性搜索?提问时请尽量提供尽可能多的信息。
标签: javascript node.js mongodb elasticsearch