所以问题是这样的,我想得到的帖子,其online
字段大于一个时间或字段不存在,我只想使用这两个子句作为过滤机制,即他们不应该贡献任何分数对搜索和有其他子句做实际搜索。
这是我目前拥有的
{
"query": {
"bool": {
"should": [
{"range" : {"online" : {"gte" : time}}},
{"bool": {"must_not": {"exists": {"field": "online"}}}}
],
}
}
}
问题是我认为这些对分数有贡献。如果一个文档的online字段大于time则得分为1.0如果一个文档的online字段不存在则得分为0.0
可以将bool should
查询包装在boolfilter
子句中。在filter
子句中,分数被忽略,因此range
或should
的分数不会为搜索贡献任何分数。将查询修改为
{
"query": {
"bool": {
"filter": {
"bool": {
"should": [
{
"range": {
"online": {
"gte": 6
}
}
},
{
"bool": {
"must_not": {
"exists": {
"field": "online"
}
}
}
}
]
}
}
}
}
}