php - 如何为ElasticSearch聚合添加条件(最小/最大)?

标签 php elasticsearch phalcon nosql-aggregation

我想查询我的Elastic-Search以获取仅具有正值的最低价格价格。我的价格也可以为零和-1;所以我不希望我的最小聚合返回0或-1。我知道我应该向查询(或过滤器)添加脚本,但是我不知道如何。我当前的代码:

public function minPriceAggregation($minName, $field = 'price')
    {
        if ($field) {
            $this->aggregation[$minName] = [
                'min' => [
                    'field' => $field
                ]
            ];
        }
        return $this;
    }

该查询始终返回-1;我想忽略小于0的值,而我的正值中只有最小值。

就像是:
public function minPriceAggregation($minName, $field = 'price')
    {
        if ($field) {
            $this->aggregation[$minName] = [
                'min' => [
                    'field' => $field,
                    'script' => [
                        'source' => 'return _value > 0 ?: _value' //What's the correct script here??
                    ]
                ]
            ];
        }
        return $this;
    }

最佳答案

试试这个:

public function minPriceAggregation($minName, $field = 'price')
    {
        if ($field) {
            $this->aggregation[$minName] = [
                'min' => [
                    'script' => [
                        'source' => 'return Math.max(0, doc["price"].value)'
                    ]
                ]
            ];
        }
        return $this;
    }

关于php - 如何为ElasticSearch聚合添加条件(最小/最大)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60372074/

相关文章:

php - 为什么从 PHP 调用的长时间运行的 Python 脚本会失败

php - 如何通过电子邮件php通过$_POST获取多个复选框值

php - 如何在不使用 `$this->Model->query()` 的情况下在 CakePHP 中编写复杂的查找查询?

python - Docker - Elasticsearch - 无法建立新连接 : [Errno 111] Connection refused', ))

java - ElasticSearch 5.3 SearchHit hit.field

php - 使用 url 重写从地址栏获取值

java - 如何在搜索 API 中排除源字段?

forms - Phalcon 使用 Phalcon\Tag 或 Phalcon\Forms 创建表单

php - Phalcon:实现 "login required"功能的最佳实践

php - Phalcon PHP 将参数传递给属于另一个 Controller 的 View