类似于以下sql语句
select * from hello where hello.a + hello.b > 10;
yqhsw0fo1#
ElasticSearch在预先计算的情况下提供最佳性能。如果sum已经在索引中,那么一个简单的范围查询将给出结果。
{ "query": { "bool" : { "filter" : { "range": { "sum_field": { "gte": 10 } } } } } }
对于当前的方案,需要使用script query
{ "query": { "bool" : { "filter" : { "script" : { "script" : { "source": "doc['field1'].value + doc['field2'].value > params.limit", "lang": "painless", "params": { "limit": 10 } } } } } } }
脚本运行缓慢,它将为每个文档运行,计算总和并筛选结果。
1条答案
按热度按时间yqhsw0fo1#
ElasticSearch在预先计算的情况下提供最佳性能。如果sum已经在索引中,那么一个简单的范围查询将给出结果。
对于当前的方案,需要使用script query
脚本运行缓慢,它将为每个文档运行,计算总和并筛选结果。