作为未使用过es新手,前两天接到排查搜索接口价格排序不准确的任务,紧锣密鼓的配好本地环境开始调试,看来看去一句排序:
$params['body']['sort']['goods_price'] = ['order' => "asc"];
也查了官方文档,没毛病啊。无奈强制转换字段类型,又是打印各种参数,折腾好久,还是没有用!
下班吃饭时候想到mapping的数据类型,第二天回到公司一查果然是创建索引时把goods_price类型设置为integer了,改成float,浮点数价格排序正常了
'goods_price' => [
'type' => 'float',
]
总结:由于对es不熟悉,不知索引字段类型在创建时候已经确定了,结果就是搜索排序时候怎么都改不动,或许还有其他方法在搜索后可以调整,等遇到再补充吧。
ps:官方文档是个好东西,尤其当遇到问题不能直接查到解决方案时。