搜索时如何在Elasticsearch中的字段上执行数学运算?

时间:2018-11-09 08:57:40

标签: elasticsearch math search

有什么方法可以在Elasticsearch数学运算中执行,例如下面所述的SQL?如果是,执行这种搜索操作的最佳方法是什么?

locality, administrative_area_level_2, and administrative_area_level_1

1 个答案:

答案 0 :(得分:1)

使用无痛脚本查询(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
                        }
                    }
                }
            }
        }
    }
}