elasticsearch Elasticsearch-按大于特定值的多个字段之和进行筛选,elasticsearch,elasticsearch" /> elasticsearch Elasticsearch-按大于特定值的多个字段之和进行筛选,elasticsearch,elasticsearch" />

elasticsearch Elasticsearch-按大于特定值的多个字段之和进行筛选

elasticsearch Elasticsearch-按大于特定值的多个字段之和进行筛选,elasticsearch,elasticsearch,我想用(attempt1+attempt2+attempt3)>99筛选文档 预期结果 { "name": "tom", "attempt1": 30, "attempt2": 30, "attempt3": 40 } { "name": "jerry", "attempt1": 20, "attempt2": 10, "attempt3": 20 } { "name": "cat", "attempt1": 80, "attempt2": 90, "attempt3": 10 } { "nam

我想用(attempt1+attempt2+attempt3)>99筛选文档

预期结果

{ "name": "tom", "attempt1": 30, "attempt2": 30, "attempt3": 40 }
{ "name": "jerry", "attempt1": 20, "attempt2": 10, "attempt3": 20 }
{ "name": "cat", "attempt1": 80, "attempt2": 90, "attempt3": 10 }
{ "name": "mouse", "attempt1": 30, "attempt2": 30, "attempt3": 30 }

在弹性搜索中,有什么方法可以做到这一点吗?

基本方法是使用如下方法:

{ "name": "tom", "attempt1": 30, "attempt2": 30, "attempt3": 40 }
{ "name": "cat", "attempt1": 80, "attempt2": 90, "attempt3": 10 }
如果在大量文档上运行上述查询,请确保添加尽可能多的约束,以减少脚本需要运行的文档集


正确的方法是预先计算总和并将其索引到另一个字段中,以便可以在该新字段中使用。根据您拥有的文档数量,它会更为优化

您的解决方案在@Val上运行得非常好。我尝试了函数_score,但认为它做得不对。这是非常简单和有效的。很好,很高兴它成功了!你仍然应该考虑预先计算这些值。
GET index/_search
{
    "query": {
        "bool" : {
            "filter" : {
                "script" : {
                    "script" : {
                        "source": "doc['attempt1'].value + doc['attempt2'].value + doc['attempt3'].value > params.threshold",
                        "lang": "painless",
                        "params": {
                          "threshold": 99
                        }
                     }
                }
            }
        }
    }
}