2017-05-26 135 views
0

如何根據特定字段值區分結果。例如,我有group_id字段,我不想用相同的group_id獲取多個結果。只得到一個具有特定字段值的項目

[{"name": "Eva", "group_id": "female"}, 
{"name": "Marina", "group_id": "female"}, 
{"name": "Raf", "group_id": "male"}, 
{"name": "Manvel", "group_id": "male"}] 

例如,這是我的文檔列表。從這個列表中我只需要得到一個男性和一個女性。所以我認爲我需要按照「組」來分組,並且只能得到一組來自該組的比賽。我認爲這很簡單,我不需要寫這個比賽。在文檔中,可能的例子是更復雜的情況。

enter image description here

+0

好的。你的查詢不起作用? –

+0

{ 'AGGS':{ 'group_by_state':{ '術語':{ '字段': '組' }, '尺寸':1 } } } –

+0

不要使用'大小:1'。刪除它,並添加大小爲「top_hits」:1.我更新了示例查詢,讓我變得更簡單。 –

回答

1

使用top_hits聚集爲您terms匯聚子聚集。您可以在文檔中找到一個示例:https://www.elastic.co/guide/en/elasticsearch/reference/5.4/search-aggregations-metrics-top-hits-aggregation.html#_example

POST /sales/_search?size=0 
{ 
    "aggs": { 
     "top_tags": { 
      "terms": { 
       "field": "group_id" 
      }, 
      "aggs": { 
       "top_one": { 
        "top_hits": { 
         "size" : 1 
        } 
       } 
      } 
     } 
    } 
} 
+0

我知道這個文檔,但對我來說還不夠清楚,而且我嘗試了你剛剛在這裏寫的東西,它不起作用。但謝謝你的迴應。 –

+0

你原來的帖子對我來說還不夠清楚。因此,請更新您的帖子,並特別提及您嘗試的內容以及無法正常工作的內容;-)。 –

+0

這也不起作用。我是否需要更改'top_tags'字段或'top_one'? 我的實際字段名稱是'group_id',所以我認爲這是正確的。但我無法理解'aggs'字段下的其他內容。 –

相關問題