有个功能不知道怎么用 ElasticSearch 实现。
简单描述是这样:
也就是说,希望可以对 ElasticSearch 下指令,让它依 state 排序,但顺序可以自订。
翻了 ElasticSearch 的文档,有提到 sort by function score,但不明白具体怎么实作,Google 一些关键字也没有我看得懂的(汗
所以想请教一下有没有人做过类似的功能,怎么实现的?
这可以算是用字符串存状态的一个缺点么..如果存整数{0 => "published", 1 => "draft", ..}就没问题了。
{0 => "published", 1 => "draft", ..}
可以用 script score,通过doc['state'].value转换成不同的值,比如 draft 为 2,taken_down 为 1,published 为 0,不过建议还是直接存数值,script score 主要是用来做一些复杂的权重运算的,你的需求只是一个简单的排序,连原始的相似性_score 都忽略了
doc['state'].value
#1 楼 @hooopo #2 楼 @megayu
谢谢,的确直接存整数会简单许多。
我试出来再来贴上我的解法供参考…