2017-04-07 101 views
1

我对弹性服务有此请求。按照定义类型排序的弹性搜索

网址回调:

GET 
/es-main/Project,ProjectStage,Task,TaskComment,TicketComment,Client,User,Attachment/_search 

如何添加排序改进的要求,只要是在嵌入URL +得分结果的顺序?现在按字母顺序排列。实施例首先是项目类型,第二个是ProjectStage等...

感谢所有答案...

GET /es-main/Project,ProjectStage,Task,TaskComment,TicketComment,Client,User,Attachment/_search 
Array 
(
    [query] => Array 
     (
      [query_string] => Array 
       (
        [query] => *a* 
        [analyzer] => hunspell_cs 
        [fields] => Array 
         (
          [0] => name 
          [1] => description 
          [2] => tags.name 
          [3] => text 
          [4] => email 
          [5] => filename 
         ) 

       ) 

     ) 
    [from] => 0 
    [size] => 10 
    [sort] => Array 
     (
      [_type] => ASC 
      [_score] => DESC 
     ) 

    [aggs] => Array 
     (
      [CountByType] => Array 
       (
        [terms] => Array 
         (
          [field] => _type 
         ) 

       ) 

     ) 

) 
+0

Elasticsearch不看在你的URL类型的顺序。您需要操纵分数,以便获得该订单。 –

+0

现在通过_type ASC和_score DESC进行排序,但是我需要按类型进行排序。将这些类型添加到排序中没有问题。这种类型我有数组。 –

回答

0

奥基,i的文档已经添加_is_Project = 1,_is_ProjectStage =,_is_Task = 1,等等...... 并设置排序到:

order: { 
'_is_Project': {'unmapped_type': 'long'}, // first 
'_is_ProjectStage': {'unmapped_type': 'long'}, // second 
'_is_Task': {'unmapped_type': 'long'}, // third - etc... 
'_score': 'DESC' 
}