下面文章中的方法和其它未说明的内容请前往此文档进行查看:Elasticsearch在PHP中的使用

在PHP中使用ELasticsearch查询时,怎样对查询结果进行排序,我分为了三种情况:

  • 情况一:

当查询中sort条件为空时,Elasticsearch会自动根据检索条件匹配相似度,生成一个相似度的数值_score,而查询结果会按这个_score进行倒序排列。

$data = $ES->search_doc($search_where, '', 0, 10);
  • 情况二:

当只传字段名时,Elasticsearch会按检索结果中此字段的值进行正序排列。

$data = $ES->search_doc($search_where, 'age', 0, 10);
  • 情况三:

组合排序,一个或多个字段进行指定排序时,类似于数据库中order的作用。

用法(排序规则,desc倒序排列,asc正序排列):

['字段名'=>['order'=>'排序规则'],'字段名2'=>['order'=>'排序规则']]

注意:当未指定_score字段时,Elasticsearch不会计算检索条件的匹配相似程度,查询结果中的_score的值为null

$data = $ES->search_doc($search_where, ['age'=>['order'=>'desc'],'_score'=>['order'=>'desc'],], 0, 10);