Elasticsearch大于或的字段不存在



所以问题是这样的,我想得到的帖子,其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子句中,分数被忽略,因此rangeshould的分数不会为搜索贡献任何分数。将查询修改为

{
"query": {
"bool": {
"filter": {
"bool": {
"should": [
{
"range": {
"online": {
"gte": 6
}
}
},
{
"bool": {
"must_not": {
"exists": {
"field": "online"
}
}
}
}
]
}
}
}
}
}

相关内容

  • 没有找到相关文章

最新更新