我正在创建对两个字段进行操作的过滤查询。我希望通过以下方式避免计算相关性
弹性搜索
. 如何在不移动到查询上下文的情况下实现OR语句。
我的简化模型有两个布尔字段:
{
is_opened,
is_send
}
我想用逻辑准备查询:
(is_opened == true AND is_send == true) OR (is_opened == false)
换句话说,我想排除包含以下字段的文档:
is_opened == true AND is_send == false
我的查询如下所示:
GET documents/default/_search
{
"query": {
"bool": {
"should": [
{
"bool":{
"must":[
{"term": {"is_opened":true}},
{"term": {"is_send":true}}
]
}
},
{
"bool":{
"must":[
{"term": {"is_opened":false}}
]
}
}
]
}
}
}
从逻辑上讲,它就像我预期的那样工作,但是
弹性搜索
计算
关联
.
我不需要它,因为最后我会按另一个字段对结果进行排序,这样就可以优化查询了。
我问这个是因为
Frequently used filters will be cached automatically by Elasticsearch, to speed up performance.
我的结果是
_得分
字段计算,所以我认为上面的查询是在查询上下文中执行的,所以Elasticsearch不会自动缓存它。
将来,我想创建在上操作的查询
地位
_得分
.
我注意到
应该
到
滤器
块计算
_得分
但作为
必须
行为
是否可以使用其他查询?
如何强制
停止计算
_得分
?