2016-10-27 6 views
0

В настоящее время запрос ниже удаляет дубликаты на одном поле - «имя», но нам нужны результаты top_hits для всех полей: «имя», «место проведения», «место проведения». Можно ли достичь этого в одном запросе, не отправив 3 запроса и установив «поле» в «место встречи» и «место проведения»?Упругий поиск объединяет агрегаты

{ 
    "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 
      } 
     } 
     } 
    } 
    } 
}