2016-07-21 48 views
2

我有以下數據我想避免結果中出現重複的練習區域名稱如何避免重複搜索結果中的重複項。請寄給我解決方案。在彈性搜索結果中避免重複

Array 
(
    [0] => Array 
     (
      [_index] => vendors 
      [_type] => practiceareas 
      [_id] => 240 
      [_score] => 
      [_source] => Array 
       (
        [practice_area_id] => 237 
        [id] => 240 
        [practice_area_name] => Anemia 
        [practice_area_image] => 
        [created_date] => 2016-07-04 14:51:46 
        [status] => 1 
        [industry_id] => 9 
        [category_id] => 14 
        [vendors_count] => 26 
        [services_count] => 0 
        [products_count] => 0 
       ) 

      [sort] => Array 
       (
        [0] => 26 
       ) 

     ) 

    [1] => Array 
     (
      [_index] => vendors 
      [_type] => practiceareas 
      [_id] => 582 
      [_score] => 
      [_source] => Array 
       (
        [practice_area_id] => 364 
        [id] => 582 
        [practice_area_name] => Joint Pains 
        [practice_area_image] => 
        [created_date] => 2016-07-04 14:51:47 
        [status] => 1 
        [industry_id] => 9 
        [category_id] => 12 
        [vendors_count] => 26 
        [services_count] => 0 
        [products_count] => 0 
       ) 

      [sort] => Array 
       (
        [0] => 26 
       ) 

     ) 

    [2] => Array 
     (
      [_index] => vendors 
      [_type] => practiceareas 
      [_id] => 1315 
      [_score] => 
      [_source] => Array 
       (
        [practice_area_id] => 237 
        [id] => 1315 
        [practice_area_name] => Anemia 
        [practice_area_image] => 
        [created_date] => 2016-07-04 14:51:46 
        [status] => 1 
        [industry_id] => 9 
        [category_id] => 15 
        [vendors_count] => 26 
        [services_count] => 0 
        [products_count] => 0 
       ) 

      [sort] => Array 
       (
        [0] => 26 
       ) 

     ) 
) 

謝謝。

回答

0

您可能喜歡使用Field Collapsing來顯示按特定字段分組的搜索結果。按名稱分組意味着需要術語聚合。

爲了能夠在'practice_area_name'上進行分組,該字段應該在其原始not_analyzed表單中可用。否則,您應該在'practice_area_id'上進行分組以避免not_analyzed字段。

"aggs": { 
    "vendors": { 
     "terms": { 
     "field": "practice_area_name" 
     }, 
     "aggs": { 
     "dedup_docs": { "top_hits": { "size": 1 }} 
     } 
    } 
    } 

注:top_score聚集訂單在每個桶中得分最高的文檔的用戶聚集的條款。

+0

當上述代碼添加此錯誤查找: [原因] =>數組 ( [型] => script_exception類型的 [原因] =>腳本[直列],操作[AGGS]和郎[常規]是禁用 –

+0

[reason] =>類型爲[inline],操作[aggs]和lang [groovy]的腳本被禁用 ) –

+0

默認情況下在elasticsearch中禁用腳本。我正在更新我的答案,以刪除腳本得分 – Rahul