elasticsearch,phalcon,nosql-aggregation,Php,elasticsearch,Phalcon,Nosql Aggregation" /> elasticsearch,phalcon,nosql-aggregation,Php,elasticsearch,Phalcon,Nosql Aggregation" />

Php 如何向ElasticSearch聚合添加条件(最小/最大)?

Php 如何向ElasticSearch聚合添加条件(最小/最大)?,php,elasticsearch,phalcon,nosql-aggregation,Php,elasticsearch,Phalcon,Nosql Aggregation,我想查询我的弹性搜索,以获得只有正值的值的最低价格。我的价格也可以是零和-1;所以我不希望我的最小聚合返回0或-1。我知道我应该向查询(或过滤器)添加一个脚本,但我不知道如何添加。我当前的代码: public function minPriceAggregation($minName, $field = 'price') { if ($field) { $this->aggregation[$minName] = [

我想查询我的弹性搜索,以获得只有正值的值的最低价格。我的价格也可以是零和-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;
    }

max总是返回0,因为我的最小值是-1。假设我有这些值:[-1,0,5,10,15,…]。我希望我的函数返回5;但在我的情况下,你的答案总是返回0。还有更好的选择吗?
Math.max(0,-1)=0
Math.max(0,5)=5
。请出示一个示例文档好吗?正如我所说,我的价格值在-1和X之间。我希望查询忽略<0的值,只返回正价格的最小值。在您的解决方案文档中[“价格”]。值始终为-1;所以Math.max(0,doc[“price”].value)总是返回0。有没有办法先忽略负值,然后再将其传递给min?好的,那么您只需要一个查询部分来排除价格为负值的文档