ElasticSearch顺序比使用“sort”选项更复杂

oxalkeyp  于 2022-11-22  发布在  ElasticSearch
关注(0)|答案(1)|浏览(114)

我正在进行一个查询,在该查询中它接收到几个属性,这些属性有属性“price”和属性“old price”
我想做的是在两者之间做减法,以便能够知道哪个是降低最多的(正在销售的那个)

"sort" : {
        "script" : {
                "inline": "doc['oldprice'] - doc['price']",
  
        },
        "order" : "asc"
    }

我正在查看elasticsearch文档,我可以找到一些可以帮助我的东西,但是symfony开发环境给我一个错误“sort option [inline] not supported [reason:所有碎片失败]”
也就是说,“inline”选项无效,我正在使用2.4版的elastic,除了使用脚本选项之外,还有什么其他方法可以实现此逻辑

"sort" : {
        "script" : {
                "inline": "doc['oldprice'] - doc['price']",
  
        },
        "order" : "asc"
    }
6tqwzwtp

6tqwzwtp1#

Tldr;

版本2.4已经被永远弃用了。也许应该考虑升级。
我觉得你的剧本有个打字错误。根据文档

{
    "query" : {
        ....
    },
    "sort" : {
        "_script" : {
            "type" : "number",
            "script" : {
                "inline": "doc['oldprice'] - doc['price']"
            },
            "order" : "asc"
        }
    }
}

相关问题