Есть ли способ выполнить в математических операциях Elasticsearch, как описано ниже в SQL? Если да, каков наилучший способ выполнить такую операцию поиска?
select * from products where price + 50 > 20
Это возможно с помощью безболезненного скриптового запроса (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-query.html).
Просто попробуйте:
GET /products/_search { "query": { "bool" : { "must" : { "script" : { "script" : { "source": "(doc['price'].value + 50) > 20", "lang": "painless" } } } } } }
Подготовленное утверждение, подобное поведению, можно сделать так:
GET /products/_search { "query": { "bool" : { "must" : { "script" : { "script" : { "source": "(doc['price'].value + params.foo) > params.bar", "lang": "painless", "params" : { "foo" : 50, "bar" : 20 } } } } } } }