Как выполнить математические операции с полями вasticsearch во время поиска? - PullRequest
0 голосов
/ 09 ноября 2018

Есть ли способ выполнить в математических операциях Elasticsearch, как описано ниже в SQL? Если да, каков наилучший способ выполнить такую ​​операцию поиска?

select * from products where price + 50 > 20

1 Ответ

0 голосов
/ 09 ноября 2018

Это возможно с помощью безболезненного скриптового запроса (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
                        }
                    }
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...