2016-10-27 8 views
0

현재 아래 쿼리는 "name"이라는 단일 필드에서 중복을 제거하지만 "name", "venueName", "venueTown"과 같은 모든 필드에 대해 top_hits 결과가 필요합니다. 3 개의 요청을 보내지 않고 "field"를 "venueName"및 "venueTown"로 설정하지 않고 하나의 쿼리 내에서 달성 할 수 있습니까?탄성 검색 결합 집계

{ 
    "aggs": { 
    "query": { 
     "terms": { 
     "field": "name" 
     } 
    , 
     "aggs": { 
     "top": { 
      "top_hits": { 
      "size": 1 
      } 
     } 
     } 
    } 
    }, 
    "size": 0, 
    "query": { 

      "multi_match": { 
      "query": "LAURA", 
      "operator": "OR", 
      "fields": [ 
       "name", 
       "venueName", 
       "venueTown" 
      ] 
      } 
    } 
} 

답변

1

정확하게 이해하면 상위 히트와 함께 여러 개의 집계를 작성할 수 있습니다.

{ 
    "query": { 
    "multi_match": { 
     "query": "LAURA", 
     "fields": [ 
     "name", 
     "venueName", 
     "venueTown", 
     ] 
    } 
    }, 
    "aggs": { 
    "name": { 
     "terms": { 
     "field": "name" 
     }, 
     "aggs": { 
     "top": { 
      "top_hits": { 
      "size": 1 
      } 
     } 
     } 
    }, 
    "venue_name": { 
     "terms": { 
     "field": "venueName" 
     }, 
     "aggs": { 
     "top": { 
      "top_hits": { 
      "size": 1 
      } 
     } 
     } 
    }, 
    "venue_town": { 
     "terms": { 
     "field": "venueTown" 
     }, 
     "aggs": { 
     "top": { 
      "top_hits": { 
      "size": 1 
      } 
     } 
     } 
    } 
    } 
}