在弹性搜索中按COALESCE排序

时间:2019-04-26 11:36:17

标签: mysql elasticsearch

我在使用ElasticSearch对null列进行排序时遇到问题。以前,我使用sql查询COALESCE从列中获取非null值。如何对列中的非空值进行排序?

SQL查询

ORDER BY COALESCE(
  NULLIF(table1.colA,''),
  NULLIF(table1.colB,''),
  NULLIF(table1.colC,'')
) DESC

上面的语句将检查colA是否有价值,然后选择colA。如果colA为null,它将检查colB。

如何在Elasticsearch中使用COALESCE类似功能进行排序?

1 个答案:

答案 0 :(得分:1)

您可以将script based scoring与该功能配合使用,完全控制_score字段的计算方式。

根据您的情况,您可以编写一个小的脚本来返回文档中的第一个非空字段。